nishadil / imagetinify
Open-source PHP image optimization and compression library inspired by TinyPNG.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 1
Open Issues: 0
pkg:composer/nishadil/imagetinify
Requires
- php: >=8.1
- symfony/console: ^7.0
- symfony/process: ^7.0
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2025-12-02 08:31:43 UTC
README
ImageTinify is an open-source PHP image optimization library inspired by TinyPNG/TinyJPG.
It provides a simple API and CLI to compress PNG, JPEG, AVIF and WebP images using a combination
of native PHP methods and optional best-in-class CLI tools (pngquant, zopfli, mozjpeg, jpegoptim).
Features
- PNG, JPEG, WebP, AVIF support
- Lossy and lossless modes
- Optional integration with external tools
- Laravel/CMS friendly
- CLI utility
Tools to install (strongly recommended)
sudo apt update sudo apt install -y pngquant zopfli jpegoptim libjpeg-turbo-progs cavif libavif-bin imagemagick
Confirm installed:
which pngquant zopfli cjpeg jpegoptim cwebp || true which cavif avifenc
Installation
composer require nishadil/imagetinify
Usage (smart mode)
use Nishadil\ImageTinify\ImageTinify; $tiny = new ImageTinify(); $tiny->compress('uploads/input.png', 'uploads/input-tinified.png');
Usage customized
use Nishadil\ImageTinify\ImageTinify; $tiny = new ImageTinify(); $tiny->compress('uploads/input.png', 'uploads/input-tinified.png', [ 'mode' => 'lossy', 'quality' => '65-85' ]);
Get compressed image as binary string
use Nishadil\ImageTinify\ImageTinify; $tiny = new ImageTinify(); $data = $tiny->compress('images/test.jpg', null, ['quality' => 75]); // $data now contains binary content file_put_contents('images/test-tinified-inline.jpg', $data);
Direct print image
use Nishadil\ImageTinify\ImageTinify; $tiny = new ImageTinify(); header('Content-Type: image/jpeg'); echo $tiny->compress('images/test.jpg', null, ['quality' => 70]);
Get Base64 encoded image
use Nishadil\ImageTinify\ImageTinify; $tiny = new ImageTinify(); $binary = $tiny->compress('images/test.png'); $base64 = base64_encode($binary); echo "data:image/png;base64," . $base64;
CLI
php bin/imagetinify input.png output.png --mode=lossy --quality=80