phpで画像を縮小するときに、出来るだけ劣化させないで

縮小する方法はありますでしょうか。
宜しくお願いします。

現状
$src=@imagecreatefromjpeg(test.jpg);
$dst=imagecreatetruecolor(100,120);
imagecopyresized($dst,test.jpg,0,0,0,0,100,120,200,240);
imagejpeg($dst,test.jpg);

環境
fedora7
apache
php
mysql

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/05/14 09:18:52
  • 終了:2008/05/17 00:49:31

ベストアンサー

id:cyndy No.1

cyndy回答回数3ベストアンサー獲得回数12008/05/14 11:25:51

ポイント40pt

わたしは下記の方法でデジカメの画像を幅400ピクセルに縮小しています。

ファイルサイズはだいたい30キロバイト以下ですが

そんなに劣化してる印象はありません。よければ参考にしてみてください。

list($width, $height) = getimagesize($tmp_name);

//幅を400ピクセルに縮小

$newheight = abs(400 * $height / $width);

//空の画像を作成

$image_p = imagecreatetruecolor(400, $newheight);

//元の画像をコピー

$image = imagecreatefromjpeg($tmp_name);

//サイズ変更

imagecopyresampled($image_p, $image, 0, 0, 0, 0, 400, $newheight, $width, $height);

//ダミ

http://www.yahoo.co.jp/

imagejpeg($image_p, SAVE_PHOTO_PATH."$name");

id:konorinori

ご指導していただいた通りの方法で

劣化することなく処理することができました。

ありがとうございました。

2008/05/17 00:47:54

その他の回答(1件)

id:cyndy No.1

cyndy回答回数3ベストアンサー獲得回数12008/05/14 11:25:51ここでベストアンサー

ポイント40pt

わたしは下記の方法でデジカメの画像を幅400ピクセルに縮小しています。

ファイルサイズはだいたい30キロバイト以下ですが

そんなに劣化してる印象はありません。よければ参考にしてみてください。

list($width, $height) = getimagesize($tmp_name);

//幅を400ピクセルに縮小

$newheight = abs(400 * $height / $width);

//空の画像を作成

$image_p = imagecreatetruecolor(400, $newheight);

//元の画像をコピー

$image = imagecreatefromjpeg($tmp_name);

//サイズ変更

imagecopyresampled($image_p, $image, 0, 0, 0, 0, 400, $newheight, $width, $height);

//ダミ

http://www.yahoo.co.jp/

imagejpeg($image_p, SAVE_PHOTO_PATH."$name");

id:konorinori

ご指導していただいた通りの方法で

劣化することなく処理することができました。

ありがとうございました。

2008/05/17 00:47:54
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/05/14 19:35:37

ポイント35pt

PHPのイメージ関数の能力にご不満でしたら、外部プログラムを呼び出してはいかがでしょうか。

たとえば ImageMagick の convert をお勧めします。Linux / Windows で動きます。

id:konorinori

ありがとうございます。

大変参考になりました。

2008/05/17 00:48:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません