1

数ヶ月前、私は自分の perl サーバーにImage::Magickをインストールしましたが、今は予期しない動作をしています..

何時間もの調査の後、私はいくつかの問題に行き詰まっています..

私がやろうとしているのは、画像を .png から .jpg に変換することです。

ここに問題はありません..問題はここに来ます。基本的に、変換後のファイル「.jpg」は常に.pngよりも大きくなります..

ここに私のコードのスニペット:

my $image = Image::Magick->new;

my  $x = $image->Read($serverPathDir.'/'.$serverFileName);  # an .png file 

    $x = $image->Set( Gravity => 'Center' );
    $x = $image->Resize(geometry=>'435x210'); 
    $x = $image->Set(Quality=>'80%');
    $x = $image->Write($serverPathDir.'/'.'.jpg');

いくつかの調査と理論の後、特定の画像にそのような問題が存在する可能性があることに気付きました..他の画像でテストすると、結果はより満足のいくものになりますが、GIMP (png から jpg) のようなものはありません... どのような圧縮画像かわかりません::Magickは使用しますが、他のものとは非常に異なるようです.. 例: GIMP

4

2 に答える 2

1

jpg に変換して元のサイズを変更する場合は、8 の倍数を使用します。そのため、サイズ変更を「436x216」のジオメトリに変更して、それが役立つかどうかを確認してください。

詳しくはこちら

于 2013-08-12T23:21:40.603 に答える
0

この問題は、既に圧縮されている PNG ファイルに関係している可能性があります。

別の形式に変換するときは、画像を解凍する必要があります。次に、別の形式で圧縮しますが、元の形式ほど圧縮できない場合があります。
また、実際に使用されている色のみを含むカラー パレットを使用すると、色数の少ない PNG をさらに圧縮できます。

そのため、サンプル サイズが十分に大きい場合は、実際には JPEG バージョンの方が大きいファイルが見つかる可能性が非常に高くなります。

詳細については、ウィキペディアを参照してください。

絶対に JPEG 形式を使用する必要がない限り、任意のサイズよりも大きいファイルに対してのみ JPEG に変換します (大きなファイルは写真である可能性が高くなります)。(たとえば、PNG ファイルを読み取れないプログラム)

于 2013-08-14T00:37:01.967 に答える