5

すべての画像タイプ(PNG、GIF、JPEG)の品質を下げることができるライブラリを探しています。
を使用してJPEGを削減できることも知っていますが、これは十分に強力ではありませんが、imagejpeg()
を使用してPNGを削減できることも知っています。imagepng()

アルファを削除せずにPNG24をPNG8に変換できるものが必要です。

サーバーに何もインストールできないため、ImageMagickを使用できません。

編集:
32ビットから8に変換できるものも必要です(これは32からと同じだと確信しています)

ここで魂を見つけた

ありがとう

4

4 に答える 4

5

PNG画像を8ビットPNGに変換するには、この関数を使用して、作成しました

function convertPNGto8bitPNG()

  function convertPNGto8bitPNG($sourcePath, $destPath) {
    $srcimage = imagecreatefrompng($sourcePath);
    list($width, $height) = getimagesize($sourcePath);
    $img = imagecreatetruecolor($width, $height);
    $bga = imagecolorallocatealpha($img, 0, 0, 0, 127);
    imagecolortransparent($img, $bga);
    imagefill($img, 0, 0, $bga);
    imagecopy($img, $srcimage, 0, 0, 0, 0, $width, $height);
    imagetruecolortopalette($img, false, 255);
    imagesavealpha($img, true);
    imagepng($img, $destPath);
    imagedestroy($img);
    }

パラメーター

$sourcePath-ソースPNGファイルへのパス$destPath-宛先PNGファイルへのパス使用法

convertPNGto8bitPNG('pfc.png', 'pfc8bit.png');
于 2012-12-16T12:49:14.403 に答える
3

GDライブラリは必要ないことはわかっていますが、次のコードを使用します。

$img = imagecreatefrompng($src);
imagesavealpha($img, true);
imagepng($img, $dst, 9, PNG_ALL_FILTERS);
imagedestroy($img);

最適化された画像は元のサイズよりも約40%小さく、アルファは削除されません。

最適化の何パーセントを探していますか?

于 2012-12-11T22:16:47.790 に答える
2

これを試してみてください、これはあなたが探している結果ですか?

<?php
$size = getimagesize("original.png");
$source = imagecreatefrompng("original.png");
$target = imagecreate($size[0], $size[1]);
imagecopy($target, $source, 0, 0, 0, 0, $size[0], $size[1]);
imagepng($target,"copy.png");  
于 2012-12-13T21:25:37.263 に答える
2

PHPでの経験を通して、私は常に画像処理(GD、標準ライブラリを使用)に関していくつかの困難を抱えていました。
PHP拡張子がないと表示されないと思います。作業を容易にする拡張機能を使用することをお勧めします。例:ImageMagick

拡張機能をインストールした後、次のことを試してください。

# Load your image
$im = new Imagick('your-png32-image.png'); 
# Set quality/colors
$im->setImageFormat('PNG8');
$colors = min(255, $im->getImageColors());
$im->quantizeImage($colors, Imagick::COLORSPACE_RGB, 0, false, false);
# 8bits
$im->setImageDepth(8);
# Save image
$im->writeImage('your-png8-image.png');
于 2012-12-15T21:45:00.433 に答える