Uma biblioteca PHP para codificar imagens JPEG XL. Suporta entrada JPEG e PNG. Muito inspirado na excelente biblioteca de convertências da Webp.
Destina-se como uma solução plug-and-play que abrange os casos de uso mais comuns e pode ser usada em uma ampla variedade de projetos de PHP.
proc_open PHP precisa ser ativada para que a biblioteca possa executar o binário CJXL na linha de comando.vips está instalada e ativada. Biblioteca de processamento de imagem VIPS deve ser compilada com suporte JXLimagick está instalada e ativada. A Biblioteca ImageMagick precisa ser compilada com suporte JXL composer require joppuyo/jpeg-xl-encode
require __DIR__ . ' /vendor/autoload.php ' ;
$ source = ' /absolute/path/to/source.jpeg ' ;
$ destination = ' /absolute/path/to/destination.jxl ' ;
$ options = [
' encoding ' => ' lossy ' ,
' quality ' => 80 ,
];
try {
NPX JpegXlEncode Encoder:: encode ( $ source , $ destination , $ options );
} catch ( Exception $ exception ) {
error_log ( ' Whoops, something went wrong. ' );
} encoding
Seleciona qual codificação para usar, lossy para VardCT e lossless para modular. O padrão é lossy para entrada JPEG e lossless para entrada PNG.
quality
Qualidade da imagem para compressão com perdas. A faixa de qualidade vai de 1 a 100 . O padrão é 85 .
effort
Controla quanto tempo é usado para codificação de imagens. Tempo de codificação mais longo significa arquivos menores. O alcance é de 1 a 9 , onde 1 é o mais rápido e 9 é o mais lento. O padrão é 7 .
progressive
Ativa a decodificação progressiva da imagem. Se um navegador da Web suportar renderização progressiva, a imagem fará o download perceptivamente mais rápido. No modo VARDCT, a decodificação progressiva não afeta muito o tamanho do arquivo.
A ativação da decodificação progressiva para imagens modulares não é recomendada, pois torna o arquivo de imagem resultante significativamente maior. Ele pode ser ativado posteriormente em uma versão futura, quando houver navegadores que suportem o download apenas de parte de um arquivo progressivo modular.
O valor padrão é true para perdas e false para sem perdas.
Existem quatro métodos diferentes que você pode usar: binário binário CJXL, binário do sistema CJXL, extensão de imagemagick e extensão VIPS. A biblioteca passa por cada um dos métodos disponíveis e tenta usá -los. Se nenhum dos métodos estiver disponível, uma exceção será lançada.
Este método executa o binário cjxl na linha de comando. É o método mais compatível e suporta mais recursos. No entanto, a função proc_open precisa ser ativada na instalação do PHP, pois a biblioteca executa o binário na linha de comando. Alguns hosts da web podem desativar essa função por motivos de segurança.
Nota: Esta biblioteca vem com a versão estaticamente compilada do binário cjxl para sistemas Linux, MacOS e Windows. O binário é incluído com todas as bibliotecas necessárias, o que significa que ele funcionará fora da caixa sem a necessidade de instalar dependências adicionais.
É o mesmo que o método anterior, mas executa o binário cjxl a partir do caminho do sistema. Isso significa que você precisa instalar o JPEG XL usando o gerenciador de pacotes do sistema como o HomeBrew ou a criação do JPEG XL a partir da fonte e adicione o binário cjxl à sua variável de caminho.
Este método usa a Biblioteca ImageMagick e sua extensão PHP Imagick. No entanto, o ImageMagick precisa ser construído com o delegado JXL. Na prática, isso significa que você precisará instalar a biblioteca libjxl no servidor. Em seguida, você precisará criar o ImageMagick a partir da fonte com a opção --with-jxl=yes . Por fim, você precisará instalar a extensão PHP Imagick. A extensão ImageMagick não suporta a codificação progressiva na época. Para um exemplo de como compilar o ImageMagick com o suporte JPEG XL, consulte este Dockerfile.
Este método usa a biblioteca VIPS e sua extensão PHP. No entanto, o VIPS precisa ser construído com o suporte JXL. Na prática, isso significa que você precisará instalar a biblioteca libjxl no servidor. Então você precisará criar VIPs a partir da fonte. Por fim, você precisará instalar a extensão PHP do VIPS. A extensão do VIPS não suporta a codificação progressiva na época. Para um exemplo de como compilar VIPs com o suporte JPEG XL, consulte este Dockerfile.
Além da extensão do VIPS, você também precisará instalar a biblioteca jcupitt/vips PHP em seu projeto, além de jpeg-xl-encode , você pode fazer isso usando o seguinte comando:
composer require jcupitt/vips
Mit.
Para obter informações detalhadas da licença, consulte os cabeçalhos de arquivo individuais e .reuse/dep5 .
Este projeto está em desenvolvimento ativo e possui vários recursos atualmente em desenvolvimento.