アップロードされた画像の異常
created: 2005-12-28 13:06 | modified: 2006-01-07 03:28 | reply: 1
[2846] アップロードされた画像の異常
user: ジャック | created: 2005-12-28 13:06
アップロードされた画像を大きくなりすぎないようにリサイズして保存するようにし、リサイズしてアップロード自体は出来ました。ただ、アップしたカラー画像がセピア色やピンクがかった色などで保存されてしまいます。アップする画像によって色合いは違うのですが、減色されているような感じです。
まだ公開できないサイト、画像なので実物はお見せできないのですが、下記がif文でのエラーメッセージなどを削った、画像アップロード部分のソースです。
何処か間違ってるんでしょうか。
move_uploaded_file($_FILES["upfile"]["tmp_name"],'image.jpg');
$size = getimagesize('image.jpg');
$width = $size[0];
$height = $size[1];
$maxWidth = 150;
$maxHeight = 200;
if($width > $maxWidth || $height > $maxHeight){
($maxWidth/$width < $maxHeight/$height) ? $num = $maxWidth/$width : $num = $maxHeight/$height;
$newWidth = floor($width * $num);
$newHeight = floor($height * $num);
$src_image = imagecreatefromjpg('image.jpg');
$new_image = imagecreate($newWidth,$newHeight);
imagecopyresampled($new_image,$src_image,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpg($new_image,'image.jpg');
}
まだ公開できないサイト、画像なので実物はお見せできないのですが、下記がif文でのエラーメッセージなどを削った、画像アップロード部分のソースです。
何処か間違ってるんでしょうか。
move_uploaded_file($_FILES["upfile"]["tmp_name"],'image.jpg');
$size = getimagesize('image.jpg');
$width = $size[0];
$height = $size[1];
$maxWidth = 150;
$maxHeight = 200;
if($width > $maxWidth || $height > $maxHeight){
($maxWidth/$width < $maxHeight/$height) ? $num = $maxWidth/$width : $num = $maxHeight/$height;
$newWidth = floor($width * $num);
$newHeight = floor($height * $num);
$src_image = imagecreatefromjpg('image.jpg');
$new_image = imagecreate($newWidth,$newHeight);
imagecopyresampled($new_image,$src_image,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpg($new_image,'image.jpg');
}
[2855] カラーパレット
user: ごいんきょ。 | created: 2006-01-07 03:28
imagecreate()
で生成されたイメージをリサンプリングすると、255+1色しか使えないそうです。
gif並みになってしまいます。
imagecreatetruecolor()
で試してみてください。