godzie44/yii2-image-behavior 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

godzie44/yii2-image-behavior

Composer 安装命令:

composer require godzie44/yii2-image-behavior

包简介

Behavior that will help you to save the modified copy of the uploaded image and give you easy access to them

README 文档

README

This behavior will help you to:

  • easy save uploaded image
  • easy save modified copy of the initial image by apply modifiers like resize, flip and others. Also, you can apply more modifiers in an arbitrary sequence.
  • get access to uploaded images
  • delete images when delete record, update images when update record

Installation

composer require godzie44/yii2-image-behavior

Test

$ codecept run

Usage

In controller.

Just put in image attribute FileUpload object (like in official guide) and call $model->save() method

In model (example)

 public function behaviors()
    {
        return [
             [
                'class' => \godzie44\yii\behaviors\image\ImageBehavior::className(),

                'imageAttr' => 'avatar', //attribute in model, instance of FileUploaded

                'images' => [ // array of images that we whant to save
                   'default' => ['default' => []],
                   'small' => ['resize' => [150,200]],
                   'fliped' => ['flip' => [30]],
                   'sharped' => ['sharpen' => [30]],
                   'croped' => ['crop' => [30,40,20,10]],
                   'medium-rotate' => ['resize' => [300,400], 'rotate' => [40]],
                ],

                'saveDirectory' => Yii::getAlias('@webroot/uploads/avatars/'),
            ],
            ...
        ];
    }

Now in 'saveDirectory' directory we have 6 images with names like "<timestapm><default/small/fliped/...>.<file extension>"

Get path to this images by calling $model->getImage('default') - where default is postfix of needed image

Parameters

### Behavior parameters

  • imageAttr (required, string) Name of model attribute that contains FileUploaded object.

  • images (required, array[]) List of output images. Fields in this array must be format:

    [string image_postfix => [string modifiers => array $params, ...]]

    where:

    • image_postfix string, postfix of concrete image
    • modifiers string, modificator that will be applied to the image. (see modificator list and their params in modificators section)
    • params array, params of modificator
  • saveDirectory (required, string) The directory where the images are saved.

  • options (optional, array) where:

    • deleteOldWhenUpdate (optional, boolean) Default True. True - delete old images when upload new file in existing field, false - don't delete.
    • ifNullBehavior (optional, string) Default ImageBehavior::DELETE_IF_NULL. ImageBehavior::DELETE_IF_NULL - when attribute=NULL old images will be deleted, ImageBehavior::DO_NOTHING_IF_NULL - when attribute=NULL old images dont be deleted and field don be rewrite.

### Modifiers

  • default default image, params is empty array [].
  • resize resize image, params [int width,int height].
  • flip flip image, params [int direction].
  • sharpen sharpen image, params [int amount].
  • crop crop image, params [int width, int height,int offset_x,int offset_y].
  • rotate rotate image, params [int degrees].

You can use this modifiers in any number and combinations.

Simple example of usage (user profile with avatar)

In controller

public function actionProfile() {
        $model =  User::findOne(Yii::$app->user->id);
        if ($model->load(Yii::$app->request->post())) {
            $model->avatar = UploadedFile::getInstance($model, 'avatar');
            $model->save();
        }
        return $this->render('profile', ['model' => $model,]);
    }

User model like:

class User extends ActiveRecord
{
    public static function tableName()
    {
        return '{{%user}}';
    }

    public function rules()
    {
        return [
            [['name', 'id'], 'safe'],
            [['avatar'], 'file', 'extensions' => 'png, jpg'],
        ];
    }

    public function behaviors()
    {
        return [
            [
                'class' => ImageBehavior::className(),
                'saveDirectory' => Yii::getAlias('@webroot/uploads/avatars/'),
                'imageAttr' => 'avatar',
                'images' => [
                  '_default' => ['default' => []], //save default upload image
                  '_small' => ['resize' => [150,200]], //and save resized copy
                ],
                'options' => [
                    'ifNullBehavior' => ImageBehavior::DO_NOTHING_IF_NULL, 
                    //when avatar attribute contains null, don't need to deleted images and rewrite avatar field
                ]
            ],
        ];
    }


   //getter of resized image
    public function getSmallAvatar(){
        return = $this->getImage('_small');
    }

}

In view

$form = ActiveForm::begin();

echo $form->field($model, 'name')->textInput();

echo Html::img($model->smallAvatar);
echo $form->field($model, 'avatar')->fileInput()->label('change avatar');

echo Html::submitButton('Save', ['class' => 'btn btn-primary']);
ActiveForm::end();
  

统计信息

  • 总下载量: 331
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-06-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固