nexacodetech / compress
Compactador de arquivos PDF e Imagem, compatível também com Laravel.
Requires
- php: >=8.1
- ext-dom: *
- ext-fileinfo: *
- ext-gd: *
- ext-imagick: *
- symfony/process: *
Requires (Dev)
- phpunit/phpunit: ^11.1
README
A biblioteca Compress
permite a compressão de imagens e PDFs com facilidade. Suporta diferentes níveis de qualidade e modos de saída.
Em alguns testes, conseguimos reduzir um PDF em até 98% do seu tamanho e imagem em até 75%.
Instalação
Para instalar a biblioteca, utilize o Composer para adicionar o pacote nexacodetech/compress
ao seu projeto:
composer require nexacodetech/compress
Além disso, é necessário instalar o Ghostscript e o ImageMagick. Siga as instruções abaixo e adapte para o seu sistema operacional:
Ubuntu
sudo apt-get update sudo apt-get install -y ghostscript sudo apt-get install -y imagemagick
Uso
Comprimindo Imagens
Para comprimir uma imagem, utilize o seguinte código:
use NexacodeTech\Compress\Compress; use NexacodeTech\Compress\Enums\CompressTypeEnum; use NexacodeTech\Compress\Enums\QualityEnum; use NexacodeTech\Compress\Enums\OutputTypeEnum; $compress = Compress::make(CompressTypeEnum::IMAGE); $compress->setQuality(QualityEnum::LOW); $content = $compress->compress('files/panorama.jpg', OutputTypeEnum::FILE, 'files/compressed.jpg');
Qualidade
Os níveis de qualidade disponíveis são:
QualityEnum::LOW
QualityEnum::MEDIUM
QualityEnum::MEDIUM
QualityEnum::HIGH
QualityEnum::VERY_HIGH
QualityEnum::MAXIMUM
Tipo de Saída
Os tipos de saída disponíveis são:
OutputTypeEnum::FILE
- Salva o arquivo comprimido.OutputTypeEnum::STREAM
- Retorna o conteúdo comprimido como um stream.
Comprimindo PDFs
Para comprimir um arquivo PDF, a única modificação necessária é alterar o tipo de compressão para PDF
:
use NexacodeTech\Compress\Compress; use NexacodeTech\Compress\Enums\CompressTypeEnum; use NexacodeTech\Compress\Enums\QualityEnum; use NexacodeTech\Compress\Enums\OutputTypeEnum; $compress = Compress::make(CompressTypeEnum::PDF); $compress->setQuality(QualityEnum::LOW); $content = $compress->compress('files/document.pdf', OutputTypeEnum::FILE, 'files/compressed.pdf');
Contribuição
Se desejar contribuir para este projeto, sinta-se à vontade para abrir um pull request ou relatar problemas na página de issues.
Licença
Este projeto está licenciado sob a MIT License.