ereminmdev/yii2-cropperimageupload

为Yii框架提供的图片裁剪和上传工具。

1.0.65 2024-07-21 07:33 UTC

README

为Yii框架提供的图片裁剪和上传工具。

依赖关系

安装

composer require --prefer-dist ereminmdev/yii-cropperimageupload

使用

在模型和视图文件中添加一些代码

  • 模型
public function behaviors()
{
    return [
        'avatar' => [
            'class' => CropperImageUploadBehavior::class,
            'attribute' => 'avatar',
            'scenarios' => ['default', 'create', 'update'],
            'placeholder' => '@app/modules/user/assets/images/no-avatar.jpg',
            'path' => '@webroot/upload/avatar/{id}',
            'url' => '@web/upload/avatar/{id}',
            'thumbs' => [
                'thumb' => ['width' => 60, 'height' => 60, 'quality' => 80, 'mode' => ManipulatorInterface::THUMBNAIL_OUTBOUND],
                'preview' => ['width' => 240, 'height' => 240, 'bg_alpha' => 0],
            ],
            'cropAspectRatio' => 1,
        ],
    ];
}

public function rules()
{
    return [
        [['avatar'], 'file', 'extensions' => 'jpg, jpeg, gif, png, svg, webp'],
    ];
}
  • 表单字段
<?= $form->field($model, 'avatar')->widget(CropperImageUploadWidget::class) ?>
  • HTML图片
<?= $model->renderThumbImage('avatar') ?>
<?= $model->renderThumbImage('avatar', 'preview', ['alt' => 'Avatar']) ?>

提示

  • 重新创建缩略图
foreach (User::find()->each() as $model) {
    $filename = $model->getAttribute('avatar');

    if ($model->recreateThumbs('avatar', true, true)) {
        $this->stdout('Recreated successful: ' . $filename . "\n");
    } else {
        $this->stdout('Error when recreating: ' . $filename . "\n", Console::FG_RED);
    }
}