movescode/cropper

Official image crop and thumbnail component for MovesOS

Maintainers

Package info

github.com/djalmamartins/cropper

Homepage

pkg:composer/movescode/cropper

Transparency log

Statistics

Installs: 15

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-08-22 23:03 UTC

This package is auto-updated.

Last update: 2026-08-23 03:14:28 UTC


README

Componente oficial de thumbnails, recorte e cache de imagens do MovesOS. Usa GD, valida o conteúdo da imagem e mantém cada operação de limpeza confinada ao cache configurado.

Requisitos e instalação

  • PHP 8.2+
  • GD
  • Fileinfo
  • Mbstring
composer require movescode/cropper:^1.0

Criar thumbnails

use MovesCode\Cropper\Cropper;

$cropper = new Cropper(
    cachePath: 'storage/images/cache',
    quality: 75,
    compressor: 5
);

$proportional = $cropper->make('storage/images/photo.jpg', 500);
$cropped = $cropper->make('storage/images/photo.jpg', 500, 300);

Sem altura, a proporção original é mantida. Com largura e altura, a imagem usa recorte central no formato cover.

make() retorna o caminho do cache ou null quando a origem não existe. Chamadas repetidas com a mesma origem e dimensões reutilizam o arquivo existente.

Formatos

São aceitos JPEG, PNG, GIF e WebP. Transparência é preservada quando o formato permite.

Para gerar cache diretamente em WebP:

$cropper = new Cropper('storage/images/cache', webP: true);
$thumb = $cropper->make('storage/images/photo.png', 800, 450);

Conversão WebP

$webp = $cropper->toWebP('storage/images/photo.png', unlinkImage: false);

Com unlinkImage: true, a origem é removida somente após a conversão bem-sucedida.

Limpar cache

$cropper->flush('storage/images/photo.jpg'); // somente essa origem
$cropper->flush();                           // todo o cache configurado

A limpeza seletiva identifica todas as dimensões criadas para a mesma origem.

Qualidade e compressão

  • JPEG/WebP: qualidade entre 0 e 100.
  • PNG: compressão entre 0 e 9.
  • Valores fora do intervalo são normalizados.

Segurança e limites

A origem precisa ser uma imagem decodificável. Dimensões são limitadas a 10.000 pixels por eixo e 40 milhões de pixels de saída. O diretório raiz não pode ser usado como cache e cada exclusão é confirmada dentro do cache real.

Veja exemple/index.php. Licença MIT.