私は建物のギャラリーで作業しており、目標は低い侵入障壁です。私のユーザーはデジタルカメラを使用して写真を撮る人物なので、ファイルサイズは画像あたり200〜400 KBです。デジタルカメラで撮影した画像をアップロード/サイズ変更するにはどうすればよいですか?
私がGDライブラリを使用して実行している問題は、各画像のサイズを変更してアップロードすると、サーバーに64 MBの制限がある場合、約90MBのメモリを使用することです。
ImageMagickを使用すると、タイムアウトして内部サーバーエラーがスローされます。
誰かがこのような大きな画像サイズをアップロード/サイズ変更した経験があり、私にいくつかの示唆を与えることができるのだろうかと思います。
おかげで、
レヴィ
編集:ここではここ
/** Begin Multiple Image Upload**/
$numberImages = count($_FILES['galFile']['name'])-1;
for($i=1;$i<=$numberImages;$i++)
{
$imageName = $_FILES['galFile']['name'][$i];
$imageType = $_FILES['galFile']['type'][$i];
$imageSize = $_FILES['galFile']['size'][$i];
$imageTemp = $_FILES['galFile']['tmp_name'][$i];
$imageError = $_FILES['galFile']['error'][$i];
//Make sure it is an image
if(in_array(end(explode(".", $imageName)), $allowed))
{
//Where to upload image to
$uploadFile = $uploadDir . $imageName;
if (file_exists($uploadFile))
{
//What to do if file already exists
//Append random number to the end
$front = explode(".", $imageName);
$randomNum = rand(1,100);
$front[0] = $front[0].$randomNum;
$imageName = $front[0].".".$front[1];
$uploadFile = $uploadDir . $imageName;
}
if(move_uploaded_file($imageTemp,$uploadFile))
{
//Add $imageName to DB
$query = "INSERT INTO galleryImages VALUES(\"0\",\"$lastInsert\",\"$imageName\",\"$i\")";
mysql_query($query);
reSizePic($uploadFile);
}
}
}
をアップロードする私のコードは、私がサイズを変更するために使用されていたGDコードです:
function reSizePic($image)
{
$source_pic = $image;
$destination_pic = $image;
$max_width = 660;
$max_height = 500;
$src = imagecreatefromjpeg($source_pic);
list($width,$height)=getimagesize($source_pic);
$x_ratio = $max_width/$width;
$y_ratio = $max_height/$height;
if(($width <= $max_width) && ($height <= $max_height))
{
$tn_width = $width;
$tn_height = $height;
}
elseif (($x_ratio * $height) < $max_height)
{
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}
else
{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$tmp = imagecreatetruecolor($tn_width,$tn_height);
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);
imagejpeg($tmp,$destination_pic,100);
imagedestroy($src);
imagedestroy($tmp);
}
そして、これはありますサイズ変更に使用しているImageMagickコード:
GDの一部についてです
ImageMagickは問題なく400kbの画像を処理できるはずなので、非効率的な処理をしている可能性があります。一度に何人の人がサイズを変更しようとしていますか?コードを投稿できますか? –
私はあなたがファイルを開いていると仮定していますが、閉じていないとか、それほど多くのメモリ使用量を得ることはできません。おそらくあなたのコードを投稿しますか? – Anthony
私は200-400KBにあまり依存しません。最近では、3.2〜5メガピクセルの携帯電話カメラが一般的です。 – Blorgbeard