Convertendo o arquivo PNG32 para PNG8 sem perder o canal alfa

4

Estou usando o Linux e não tenho acesso a nenhum dos programas 'sofisticados' da Adobe.

Estou tentando converter uma imagem PNG32 existente com canal alfa para PNG8. Eu tentei os seguintes métodos:

  • convert original.png PNG8:new.png - distorce terrivelmente a imagem e preserva apenas o alfa binário (não indexado alfa)
  • GIMP - Falha também, mas produz melhor qualidade (bom quantizador de cores) do que o ImageMagick.
  • pngcrush -rem alla -reduce -brute original.png new.png - Diminuiu a imagem, mas não levou em conta a quantização (a imagem tem menos de 256 cores), então a saída ainda era PNG32.

O que mais posso experimentar?

    
por LiraNuna 06.10.2009 / 23:53

4 respostas

1

Este script PHP faz o truque com libgd:

<?PHP

if(!isset($argv[1]) || !is_readable($argv[1])) {
    echo "Creates an 8-bit PNG from a 32-bit PNG\n\n";
    echo "Usage:\n";
    echo "\t" . $argv[0] . " input.png > output.png\n";
    echo "\t" . $argv[0] . " input.png output.png\n";
    die();
}

$inFile = $argv[1];
$outFile = $argv[2] or STDOUT;

$inImage = imagecreatefrompng($inFile);
$outImage = imagecreate(imagesx($inImage), imagesy($inImage));

imagecopy($outImage, $inImage, 0, 0, 0, 0, imagesx($inImage), imagesy($inImage));

imagepng($outImage, $outFile);

Descarregue isso em um arquivo e execute-o como:

php convert.php input.png output.png
    
por 20.10.2009 / 23:23
2

Eu sei que estou um pouco atrasado para a festa, mas isso recentemente me mordeu em um projeto da web que estou trabalhando.

Eu usei pngnq para conversão em lote e meu PNG8 nunca pareceu melhor. De fato, com a taxa de amostragem mais alta ( -s 1 ), os resultados são quase indistinguíveis de um PNG32 completo.

    
por 17.11.2011 / 20:07
1

Sua distro pode incluir pngquant . Se você não conseguir encontrá-lo com o yum / apt-get, acesse o site. Eu acho que esta é sua melhor aposta.

Se tiver problemas com o pngquant, pode tentar o pngout , mas é uma hipótese remota. Eu ouvi que faz um bom trabalho mantendo o canal alfa, mas pode ser lento. Possivelmente, a lentidão das pessoas é porque a "estratégia" padrão é "Extrema", que o autor admite ser lenta.

É um programa do Windows, mas existem portas Linux (supostamente), mas o link na página de autores está desatualizado. O mantenedor da porta linux, JonoF, mantém uma página aqui agora.

Eu tenho que admitir que nunca usei isso. Boa sorte!

    
por 07.10.2009 / 05:42
0

Use pngquant , mas certifique-se de ter uma versão posterior a 1.6. A versão mais recente tem um quantizador muito bom que irá, de qualquer maneira, superar a libGD do PHP.

O Debian wheezy ainda contém uma versão de 13 anos de idade que tem saída de baixa qualidade. Existe um pacote bom de pngquant para o Debian experimental e a maioria das outras distribuições Linux.

Se a sua distro tiver apenas desatualizado pngquant , use pngnq .

    
por 04.03.2013 / 01:20

Tags