phtamas / yii2-imageprocessor
Configurable image processing for Yii2
Installs: 1 623
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 6
Open Issues: 13
Requires
- imagine/imagine: 0.6.*
- yiisoft/yii2: ~2.0
Requires (Dev)
- phpunit/phpunit: 3.*
This package is not auto-updated.
Last update: 2024-05-11 15:40:24 UTC
README
Application component for Yii2. Its main use case is to process images with a chain of preconfigured transformations. A simple DSL inspired by WideImage's smart coordinates is used to add some flexibility to the configuration. WideImage library itself isn't used, all actual image processing is delegated to Imagine.
Ad-hoc processing is also supported but if heavy and complex image manipulation is a key feature of your application it's probably better to use Imagine directly.
Getting started
Install via Composer:
"require": { "phtamas/yii2-imageprocessor": "0.5.*" }
Configure it in the 'components' section of your application configuration:
'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], ], ], ], ],
And use it anywhere in your application:
// 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 ]);