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).
- PNG, JPEG, WebP, AVIF support
- Lossy and lossless modes
- Optional integration with external tools
- Laravel/CMS friendly
- CLI utility
sudo apt update
sudo apt install -y pngquant zopfli jpegoptim libjpeg-turbo-progs cavif libavif-bin imagemagickConfirm installed:
which pngquant zopfli cjpeg jpegoptim cwebp || true
which cavif avifenccomposer require nishadil/imagetinifyuse Nishadil\ImageTinify\ImageTinify;
$tiny = new ImageTinify();
$tiny->compress('uploads/input.png', 'uploads/input-tinified.png');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;php bin/imagetinify input.png output.png --mode=lossy --quality=80