画像を回転させると品質が低下します -- php フィールド と gd フィールド 関連 問題

Rotate image reduce quality












4
vote

問題

日本語

私はユーザーが画像を左右に回転させることができるページを持っています。

問題は、ユーザーが品質の4-5倍の画像を回転させると大幅に減少すると!

私は間違っていますか?

<事前> <コード> $image_source = imagecreatefromjpeg($path_u); $rotate = imagerotate($image_source, $angle, 0); imageinterlace($rotate, true); //this is to create progressive jpeg imagejpeg($rotate, $path_u, 100); imagedestroy($rotate);
英語

I have a page where the user can rotate the images to the left and to the right.

The problem is that when the user rotates the image 4-5 times the quality is greatly reduced!

Am I doing wrong?

        $image_source = imagecreatefromjpeg($path_u);         $rotate = imagerotate($image_source, $angle, 0);         imageinterlace($rotate, true); //this is to create progressive jpeg         imagejpeg($rotate, $path_u, 100);         imagedestroy($rotate); 
</div
     
     
     

回答リスト

4
 
vote
vote
ベストアンサー
 

画像を繰り返し変更して再圧縮し(特に品質設定にかかわらず損失があるJPEG)は、最終的に乗法的なアーティファクトをもたらします。元のイメージを保存するのが良くなるでしょう、そして回転が要求されたときに、オリジナルを毎回節約するのではなく、元のものを再回転させます。

 

Repeatedly modifying and re-compressing an image (especially in JPEG, which is lossy regardless of the quality setting) is bound to eventually lead to multiplicative artifacts. You'd be better off keeping the original image, and when a rotation is requested, re-rotate the original, instead of saving over the original each time.

</div
 
 
     
     
-1
 
vote

私が間違っているのであれば、私を訂正してくださいが、2014年には、品質損失なしではなく、JPEGの写真を回転させることができますが、真剣に最小化することで。

imagejpegメソッドには、希望の品質保存を設定するのに役立つ「品質」引数があります。価値の100は完璧です。

私は同じ画像を複数回転させようとしました、そして、品質損失は人間の目には見えない。

これはコードです。

<事前> <コード> header("Content-type: image/jpeg"); $source = imagecreatefromjpeg($pictureUrl); $rotate = imagerotate($source, $degrees, 0); imagejpeg($rotate, $pictureUrl, 100); imagedestroy($source); imagedestroy($rotate);
 

Please correct me if I'm wrong, but in 2014 now, we can rotate jpeg pictures, not without quality loss, but by seriously minimizing it.

Imagejpeg method has a "quality" argument that helps set desired quality saving. 100 for the value is perfect.

I tried rotating multiple time the same image, and, the quality loss is not really visible to human eyes.

Here's the code.

    header("Content-type: image/jpeg");     $source = imagecreatefromjpeg($pictureUrl);     $rotate = imagerotate($source, $degrees, 0);     imagejpeg($rotate, $pictureUrl, 100);     imagedestroy($source);     imagedestroy($rotate);   
</div
 
 

関連する質問

0  IE6 - GDとPHPの画像出力  ( Ie6 gd and php image outputting ) 
グレースケールフィルタで画像を表示しようとしています。これが私のコードです: <事前> <コード> .csv3 と出力: <事前> <コード> .csv4 Opera、FF、Chrome、Safariすべてが問題ありませんが、IE6は画像を表示しません。...

13  定義済みのカラーへのRGB  ( Rgb to closest predefined color ) 
編集: この関数を与えた答え付き <事前> <コード> function grabclosestcolor($r, $g, $b){ $colors = array(array(124,12,12),array(7,7,11),array(110,...

4  PHPを使用して画像を45度回転させるときに黒の背景を回避する方法?  ( How to avoid black background when rotating an image 45 degree using php ) 
こんにちは私は他のJPEGファイルをマージする前にThumpnailイメージを弾く必要があります。しかし、PHPを使って45度回転すると。黒の背景を示しています。どうやってそれを回避できますか。どんな体も私を助けることができます。 ...

2  動き検出のためにimagecolorat()を使用してください  ( Using imagecolorat for motion detection ) 
セキュリティカメラを設定しています、そして私は1分の画像を比較して、何らかの動きがあったかどうかを確認します。私は私が各画像の間でチェックする10座標を持っています。ピクセルが前の画像と一致しない場合は、警告メッセージを開始します。 問題は、あまりうまく機能し...

0  PHPを使用してGDで8ビットJPEGを作成する方法  ( How to create 8bit jpeg in gd using php ) 
JPEGを16ビットまたは24ビットではなく8ビットバージョンとして保存することが可能な場合は把握しようとしています。 現在ImageCreateを使用してからimagejpegを使用して保存するが、マニュアルのパラメータが8bitのバージョンを許可するこ...

0  PHPでPHP GD生成画像のサイズを変更して表示する  ( Resize a php gd generated image in php and display it ) 
私はスクラッチからアバタースクリプトを作り、いくつかの問題を抱えています。私は透明性の働き、頭、体、シャツなどのマルチイメージサポートを手に入れました。 とにかく、PHPスクリプト内でアバターの特定のサイズを生成できるようにしたいです。このとき、私は変数 99...

1  トーナメントブラケットを描く(PHP&GD)  ( Drawing a tournament bracket php gd ) 
現在私のプロジェクトの1つのトーナメントブラケットを描くことに取り組んでいます。それは小さな括弧を描くように機能しているようですが、16歳まで到達し始めます。 リンクを越えて、8後の場所から配置されているかを確認してください。 http://www.mat...

6  PHP - 画像内の色を置き換えます  ( Php replace colour within image ) 
誰かが助けることができることを願っています、 私は画像をマスクするスクリプトを作った...しかしそれは色がマスクする色に依存しています(「緑色の画面」スタイル)。トラブルは、マスキングしているイメージがその色を含んでいれば、台無しにされています。 私がやろうと...

0  Flyで画像のサイズを変更します  ( Resize image on the fly ) 
アップロードされた画像が3000 x 5000 pxの範囲内で同じサイズに保たれるCIを使用してギャラリーを構築しました。それらを表示すると、サムネイルをトリミングしていないので、必要に応じてそれらをサイズに再びサイズにすることができますので、150×150と...

3  gdパターンを作成します  ( Gd creating patterns ) 
これらのようなパターンを作成する方法: " GDのPHPの単一の画像から? 私はたくさん試してみましたが、私はそれが簡単にできると思います。 私の考え: 1行のimageFLERERECTANGLEを入力してください。 2行目の場合、左右の...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有