0

私は Imagemagick を学ぼうとしていますが、php.net のドキュメントはひどい T_T で、質問に対する答えが見つからないようです。人々が画像をアップロードしてサイズを変更し、EXIF データを失うことを許可したいと考えています。

ここに私が現在持っているものがあります。

$thumbnail = new Imagick("http://4.bp.blogspot.com/-hsypkqxCH6g/UGHEHIH43sI/AAAAAAAADGE/0JBu9izewQs/s1600/luna-llena1.jpg");
$thumbnail->thumbnailImage( 100, 100, true );
$thumbnail->writeImage( "avatar/thumbnail.jpg" ); 

保存されている画像ファイルをどのように制御しますか? ユーザーが gif/png/jpg を送信したとします。その画像を取得して同じ入力形式として保存するか、すべてを .png に変更するにはどうすればよいでしょうか?

4

2 に答える 2

1

この IMO は、imagick サムネイルの最良の結果を生成します。

画像を読み込む

$img = new imagick( $_FILES['Picture']['tmp_name'] ); 

写真から余分な部分を切り取る

$img->trimImage(0);

サムネイルを作成します。この場合は「cropThumbnailImage」を使用しています

$img->cropThumbnailImage( 180, 180 );

すべての写真が同じ標準フォーマットになるようにフォーマットを設定します

$img->setImageFormat( 'jpeg' );

画像圧縮をjpgの圧縮に設定します

$img->setImageCompression(Imagick::COMPRESSION_JPEG); 

品質を 100 に設定します

$img->setImageCompressionQuality(100); 

結果として得られるサムネイルは、IMO で少しぼやけているため、「シャープ」にするためにわずかにシャープ効果を追加します。. これらの設定をいじりますが、私は好きです..

$img->unsharpMaskImage(0.5 , 1 , 1 , 0.05); 
于 2013-09-26T19:41:14.957 に答える
0

PHP.net のドキュメントはあまり役に立ちません。コマンドを使用して物事を行う方法を見つけてから、コマンドを PHP メソッドと一致させるのが最も簡単であることがわかりました。返信が少し遅れたので、もうお気づきかもしれませんが、そうでない場合、または他の誰かの利益のために:

writeImage保存する前に画像形式を変更する場合は、次の行を前に追加します。

$thumbnail->setImageFormat('png');

次に、 writeImage 行の拡張子を一致するように変更します。thumbnail.png

品質を変更するには、次のように記述します。

$thumbnail->setImageCompressionQuality(40); // Adjust the number 40

場合によっては、次のように記述して圧縮タイプを設定することもできます。

$thumbnail->setImageCompression(Imagick::COMPRESSION_JPEG);

ここで圧縮定数を見つけることができます: http://www.php.net/manual/en/imagick.constants.php

注: これらは単なる例です。この圧縮は、実際には png ファイルでは機能しません。

于 2013-04-25T09:50:06.307 に答える