1

私は疑問を持っています。imagejpeg で .png ファイルを強制的に保存すると問題はありますか? この例のように:

imagejpeg($img,$_SERVER['DOCUMENT_ROOT']."/test.png",80);

$qualityフィルターが使えるのでこの方法を使いたいです。この方法では、約 25kb の保存された .png ファイルがありますが、imagepng を使用すると、イメージは約 200kb になります (0-9 の $quality レベルを使用しましたが、変更は見られず、-20 kb のみ)。 . 私のウェブサイトは毎秒 .png 画像を生成しているので、間違いを犯したくありません。

方法 2. pngquant で .png 画像を圧縮しようとしましたが、imagepng 関数を使用しているときに圧縮する方法がわかりません。このようなことを試しましたが、画像を関数に渡すとうまくいきません。

ob_start();
imagepng($img);
$png = ob_get_clean();
file_put_contents($_SERVER['DOCUMENT_ROOT']."/test.png", compress($png);

function compresss($img)
{
    //...
}

それ以外の場合、私が持っている場合$png = $_FILES['file']['tmp_name']は機能しています。pngquant で圧縮する方法はありますか、または imagejpeg で .png ファイルを強制的に保存すると問題がありますか?

4

2 に答える 2

2

作成したファイルのファイル名だけを強制します。結果のファイルは、すべてのプロパティを含む jpg になります。この方法を使用すると、圧縮された png ファイルを取得できませんimagejpeg()

両方の形式の違いを理解する必要があります。jpg は圧縮時に画像情報が失われる圧縮形式ですが、png は可逆形式です。pngにも圧縮率がありますが、画像情報が破壊されないため、jpgファイルとしては大きくなります。

を使用imagepng($image, $filename, 9)すると、圧縮率が最も高い png ファイルが得られます。

于 2016-09-06T14:18:26.347 に答える