rundiz / image
Image manipulation use GD or Imagick as drivers. It support watermark image or text, resize, crop, rotate, transparency gif or png and also support animation gif (Imagick only).
Installs: 472
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 2
Open Issues: 0
pkg:composer/rundiz/image
Requires
- php: >=5.4.0
Requires (Dev)
- yoast/phpunit-polyfills: ^2.0
README
Simple image manipulation that use GD or Imagick as drivers.
Features:
File extensions supported
- AVIF (AVIFS)
*
- GIF
- JPG (JPEG)
- PNG
- WEBP
*
Functional
- Crop
- Flip (Require PHP 5.5+ for GD driver.)
- Resize (aspect ratio and not)
- Rotate
- Watermark image (including alpha transparency.)
- Watermark text (including alpha transparency.)
- Supported alpha transparency or transparent AVIF, GIF, PNG, WEBP.
- Supported animated GIF, WEBP
*
(Imagick only).
Tested up to PHP 8.4.
Example
Drivers
Gd driver
$Image = new \Rundiz\Image\Drivers\Gd('/path/to/source-image.jpg');
Imagick driver
$Image = new \Rundiz\Image\Drivers\Imagick('/path/to/source-image.jpg');
Fallback drivers
You can use multiple drivers as fallback if it does not support.
if (extension_loaded('imagick') === true) { $Image = new \Rundiz\Image\Drivers\Imagick('/path/to/source-image.jpg'); } else { $Image = new \Rundiz\Image\Drivers\Gd('/path/to/source-image.jpg'); }
Image manipulation methods
// Crop an image $Image->crop(400, 400, 'center', 'middle');// crop start from center of X and Y $Image->crop(400, 400, 20, 90);// crop start from X 20 and Y 90 // Resize $Image->resize(600, 400); // Resize without aspect ratio $Image->resizeNoRatio(500, 300); // Rotate $Image->rotate();// 90 degree $Image->rotate(180); $Image->rotate(270); // Flip $Image->rotate('hor');// horizontal $Image->rotate('vrt');// vertical $Image->rotate('horvrt');// both horizontal and vertical // Watermark image $Image->watermarkImage('/var/www/image/watermark.png', 'center', 'middle'); $Image->watermarkImage('/var/www/image/watermark.png', 50, 90);// watermark start from X 50 and Y 90 // Watermark text $Image->watermarkText('hello world', '/var/www/fonts/myfont.ttf', 'center', 'middle', 16); $Image->watermarkText('hello world', '/var/www/fonts/myfont.ttf', 50, 90, 16);// watermark start from X 50 and Y 90
Multiple image process
$Image = new \Rundiz\Image\Drivers\Gd('/path/to/source-image.jpg'); $Image->resize(900, 600); $Image->save('/path/to/new-file-name-900x600.jpg'); // Use method clear() to clear all processed data // and start new image process with the same image source. $Image->clear(); $Image->resize(300, 100); $Image->save('/path/to/new-file-name-300x100.jpg');
For more details, please look in tests folder or see API doc
Remark:
*
AVIF
- PHP and Imagick that use ImageMagick prior 7.0.10-25 doesn't supported open or save AVIF.
Some older system may be able to save but the file's mime type will not changed. - PHP and Imagick (depend on ImageMagick) doesn't supported animated AVIF (AVIFS).
- PHP all version (last checked 8.3) with GD doesn't supported some kind of AVIF.
- PHP prior 8.1 with GD doesn't supported AVIF.
- PHP and Imagick that use ImageMagick prior 7.0.10-25 doesn't supported open or save AVIF.
*
WEBP
- PHP and Imagick that use ImageMagick prior 7.0.8.68 doesn't supported open or save animated WEBP.
- PHP all version (last checked 8.3) with GD doesn't supported animated WEBP.
- PHP prior 7.0 with GD (1, 2) doesn't supported open or save transparent WEBP.
- PHP prior 5.6 with GD doesn't fully supported WEBP and may cause image becomes green. Tested with PHP on Windows.