2012-03-30 19 views
3

PHPのcairo拡張子を持つPNGファイルを生成しています。イメージには背景とテキストが含まれています。今私はカイロによって生成された後、PHPでこれらの画像を圧縮したいと思います。これを行うライブラリはありますか?PHPでPNGファイルを圧縮する

私が見つけたpngcrushツール。しかし、それはコマンドラインツールです。私はsystem呼び出しを呼びたくはありません。 PHPソリューションがない場合は、Cの解決策があります。その場合、PHP拡張モジュールを作成します。

私はthis related質問を読んだ。しかし答えはありません。

答えて

1

を使用することができます。あなたはそのページの一番下にそれのソースを得ることができます、そしてそれは分離されたCLIバージョンも持っています。

ソースはC++で、ANSI Cではないという問題のみです。私はPHPエクステンションを作成していないので、違いがあるかどうかはわかりません。

0

CコードについてはImageMagickをご覧ください。 PHPエクステンションもあるようです。

+0

http://stackoverflow.com/questions/7462827/phpimagick-png-compressionこのようには動作しません。 –

+0

Aha! ImageMagickの問題ではないPHP問題のようです。 PHP-ImageMagickエクステンションにフラグを追加するか、自分で作成することができます。 [MagickCore](http://www.imagemagick.org/script/magick-core.php)には、gifをコード内のpngに変換する方法の例(「例」を検索)があります。 – RunHolt

+0

関連する質問が表示されたらOPがPHPで試してみましたが、コマンドラインで試してみました。いずれの場合も、私は10%以上の圧縮を達成しません。 –

1

あなたは、私がPngOptimizerを見てみましょうimagepng() ...

//If you don't already have a handle to the image and it's just on the file system... 
$im = imagecreatefrompng("yourGenerateFile.png"); 
$quality = 5; //0 - 9 (0= no compression, 9 = high compression) 
imagepng($im, 'file/to/save.png', $quality); //leave out filename if you want it to output to the buffer 
imagedestroy($im); 
+0

私はすでにカイロのハンドルを持っていますが、gdのハンドルは持っていません。あなたのコードを試してみましょう。 –

+0

品質は保持されません。透明性が完全に失われました! –

+0

透明度を使用するには: 'imageAlphaBlending($ im、true); imageSaveAlpha($ im、true); ' はこう言っています:http://php.net/manual/en/function.imagecreatefrompng.php#43024 –