trisnawan / image-resizer
Resizer, Thumbnailer, Cropper Image with PHP Imagick
v2.0.0
2026-07-13 04:42 UTC
Requires
- php: >=7.4.0
This package is auto-updated.
Last update: 2026-08-13 04:48:33 UTC
README
Resize, crop, convert, and watermark images using either Imagick or GD with the same API.
Instalation
composer require trisnawan/image-resizer
Initialization
use Trisnawan\ImageResizer\ImageResizer;
// Image from user upload $filePath = $_FILES["image"]["tmp_name"]; // Image from local storage $filePath = "path/to/image_file.jpg"; // Default library: Imagick $resizer = new ImageResizer($filePath); // Explicit Imagick $resizer = new ImageResizer($filePath, 'imagick'); // Use GD $resizer = new ImageResizer($filePath, 'gd'); // Optional PDF render resolution in DPI $resizer = new ImageResizer($filePath, 'imagick', 300);
PDF Source
// Automatically load the first page of a PDF $resizer = new ImageResizer('../folder/file.pdf'); // Load page 2 from a PDF $resizer = new ImageResizer('../folder/file.pdf[2]'); // Render a PDF page with higher resolution for sharper output $resizer = new ImageResizer('../folder/file.pdf[2]', 'imagick', 300); // If GD is selected for a PDF, the library automatically falls back to Imagick $resizer = new ImageResizer('../folder/file.pdf', 'gd', 300);
$pdfResolution is optional and only affects PDF sources. The default value is 150 DPI.
PDF page numbers in the path use one-based numbering, so [1] is the first page and [2] is the second page.
Resize Image
Use the maximum pixels and the image will be automatically reduced to the maximum size.
// Max Width in pixels $maxWidth = 640; $resizer->maxWidth($maxWidth);
Crop Image
// Crop the image into a square from the center $resizer->cropCenter(); // Crop the image into a square from the top $resizer->cropTop();
Add Text Watermark
// Basic watermark with automatic bottom-right placement $resizer->createWatermark('© My Brand'); // Manual position $resizer->createWatermark('© My Brand', 20, 40); // Manual position with custom size, opacity, and color $resizer->createWatermark('© My Brand', 20, 40, 24, 0.45, '#ffffff'); // Opacity also accepts percent values $resizer->createWatermark('© My Brand', null, null, 18, 55, '#f5f5f5');
Parameter summary:
$text: watermark text.$x: horizontal position. If omitted, the watermark is placed automatically at the bottom-right.$y: vertical position. If omitted, the watermark is placed automatically at the bottom-right.$size: optional text size.$opacity: optional opacity, accepts0..1or1..100.$color: optional hex color such as#ffffffor#fff.
GD uses TrueType text automatically when a common system font is available, and falls back to the built-in GD bitmap font otherwise.
Save to Local Storage
// Keep the original format if the extension is the same $saveFilePath = "path/to/image_new.jpg"; $resizer->writeImage($saveFilePath); // Convert output format based on the target extension $resizer->writeImage('path/to/image_new.webp'); $resizer->writeImage('path/to/image_new.png');
If the output filename has no extension, the original image format is used.
Show Blob Image
// Show in blob $blob = $resizer->getBlob();
Full Example
use Trisnawan\ImageResizer\ImageResizer; $filePath = $_FILES["image"]["tmp_name"]; $resizer = new ImageResizer($filePath, 'gd'); $resizer->maxWidth(1280); $resizer->cropCenter(); $resizer->createWatermark('© My Brand', null, null, 20, 0.5, '#ffffff'); $resizer->writeImage('uploads/profile.webp');