赵彦 / yii2-imageprocessor
为Yii2提供的可配置图像处理
v0.5.1
2015-03-05 16:02 UTC
Requires
- imagine/imagine: 0.6.*
- yiisoft/yii2: ~2.0
Requires (Dev)
- phpunit/phpunit: 3.*
This package is not auto-updated.
Last update: 2024-09-28 17:49:07 UTC
README
适用于Yii2的应用组件。其主要用途是通过一系列预配置的转换来处理图像。使用受WideImage的智能坐标启发的简单DSL,增加了配置的灵活性。本库本身不使用WideImage库,所有实际图像处理都委托给Imagine。
也支持临时处理,但如果复杂且重量级的图像操作是您应用程序的关键功能,则可能最好直接使用Imagine。
入门指南
通过Composer安装
"require": { "phtamas/yii2-imageprocessor": "0.5.*" }
在应用程序配置的“components”部分中进行配置
'imageProcessor' => [ 'class' => '\phtamas\yii2\imageprocessor\Component', // Default for all JPEG images 'jpegQuality' => 90, // Default for all PNG images 'pngCompression' => 7, // Create named image categories with their own configuration. // You can refer them by name in application code. 'define' => [ 'userAvatar' => [ // Add transformations. They will be applied in the order they were defined. 'process' => [ // Fix images with embedded orientation metadata ['autorotate'], // Preapre image to crop by resizing it to cover a 160*160 square ['resize', 'width' => 160, 'height' => 160, 'scaleTo' => 'cover'], // Crop it ['crop', 'x' => 'center - 80', 'y' => 'center - 80', 'width' => 160, 'height' => 160], ], ], 'galleryImage' => [ // Override default to save some disk space and bandwidth 'jpegQuality' => 80, 'process' => [ // Resize proportionally to fit a 600*600 square but only if too large ['resize', 'width' => 600, 'height' => 600, 'scaleTo' => 'fit', 'only' => 'down'], // Mark your property ['watermark', 'path' => '@path/to/wmark.png', 'align' => 'top-left', 'margin' => 20], ], ], ], ],
并在应用程序的任何地方使用它
// Process uploaded image and save as a JPEG file $path = '@image/user/avatar/' . uniqid() . '.jpg'; Yii::$app->imageProcessor->save(['file' => $uploadedFile->tempName], $path, 'userAvatar'); // Process image (stored as BLOB in the DB) and send it to the HTTP client Yii::$app->imageProcessor->send(['data' => 'binary string'], 'jpg', 'galleryImage'); // Ad-hoc processing is possible, too Yii::$app->imageProcessor->saveAndSend(['file' => '@images/image.jpg'], $path, 'jpg', [ 'process' => [['resize', 'width' => 300]], // Resize proportionally to 300 px width ]);