Search by

jonatasfenske / cropper

jonatasfenske

Crop inteligente de imagens PHP 8.5 com Focal Point, suporte AVIF/WebP nativo, batch processing para responsive images e geração de tag <picture>

Package info

github.com/jonatasfenske/cropper

pkg:composer/jonatasfenske/cropper

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-13 19:01 UTC

This package is auto-updated.

Last update: 2026-11-13 19:20:59 UTC


README

Crop inteligente de imagens PHP 8.5 com Focal Point, AVIF e responsive images

PHP 8.5+ MIT License

Instalação

composer require jonatasfenske/cropper

Recursos

  • Focal Point crop — algoritmos center, face (detecção de pele), entropy (complexidade visual) e custom
  • AVIF e WebP nativos via GD/Imagick sem dependências externas
  • Batch processing para geração de múltiplos tamanhos (responsive images)
  • Tag <picture> completa com múltiplos formatos e fallback automático
  • srcset generation com descritores w ou x (retina)
  • Presets prontos — standard, retina, thumbnail
  • Suporte dual GD/Imagick com detecção automática

Uso Rápido

Crop Simples

use JonatasFenske\Cropper\Cropper;

$cropper = new Cropper('storage/cache/thumbs', quality: 80, webP: true);
$thumb = $cropper->make('storage/uploads/foto.jpg', width: 300, height: 200);

Focal Point Inteligente

use JonatasFenske\Cropper\FocalPoint;

$focal = new FocalPoint('face'); // ou 'entropy', 'center', 'custom'
$point = $focal->detect('storage/uploads/retrato.jpg');
// ['x' => 480, 'y' => 200] — região do rosto detectada

Responsive Images

use JonatasFenske\Cropper\BatchProcessor;

$batch = new BatchProcessor($cropper);

$results = $batch->generateResponsive('storage/uploads/hero.jpg', [
 ['width' => 320, 'suffix' => '-sm'],
 ['width' => 640, 'suffix' => '-md'],
 ['width' => 1280, 'suffix' => '-lg'],
]);

$srcset = $batch->buildSrcset($results);
// "/cache/hero-320w.webp 320w, /cache/hero-640w.webp 640w, ..."

echo $batch->buildPictureTag(
 'storage/uploads/hero.jpg',
 BatchProcessor::presetStandard(),
 formats: ['webp', 'jpg'],
 alt: 'Banner principal',
 extraAttrs: ['loading' => 'lazy'],
);

Testes

composer test

Licença

MIT