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

v1.1.0 2025-11-04 08:06 UTC

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