アップロードされた画像のアスペクト比を維持する必要があるという問題があります。アップロードされた画像のサイズを変更しながらアスペクト比を維持する方法
写真がアップロードされると、次の3つのサイズを作成する必要があります、a)は 310X230(Thumnail)B)960X400(詳細画像)c)のオリジナルサイズ(フル 画像)のサイズが正確に作成されます。寸法。写真が のいずれかのアスペクト比でない場合は、そのサイズに換算して とし、余分な部分を切り取ります。
私は
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$image =$_FILES["file"]["name"];
$uploadedfile = $_FILES['file']['tmp_name'];
if ($image)
{
$filename = stripslashes($_FILES['file']['name']);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
$change='<div class="msgdiv">Unknown Image extension </div> ';
$errors=1;
}
else
{
$size=filesize($_FILES['file']['tmp_name']);
if ($size > MAX_SIZE*1024)
{
$change='<div class="msgdiv">You have exceeded the size limit!</div> ';
$errors=1;
}
if($extension=="jpg" || $extension=="jpeg")
{
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
}
else if($extension=="png")
{
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);
}
else
{
$src = imagecreatefromgif($uploadedfile);
}
//echo $src;
list($width,$height)=getimagesize($uploadedfile);
$newwidth=$width;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
$newwidth1=310;
$newheight1=230;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);
$newwidth2=960;
$newheight2=400;
$tmp2=imagecreatetruecolor($newwidth2,$newheight2);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);
imagecopyresampled($tmp2,$src,0,0,0,0,$newwidth2,$newheight2,$width,$height);
$filename = "images/medium/". $_FILES['file']['name'];
$filename1 = "images/thumbnail/small". $_FILES['file']['name'];
$filename2 = "images/full/". $_FILES['file']['name'];
imagejpeg($tmp,$filename,100);
imagejpeg($tmp1,$filename1,100);
imagejpeg($tmp2,$filename2,100);
imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);
imagedestroy($tmp2);
}}
}
オリジナルのフルサイズの画像もトリミングしますか?サイズ変更された画像のアスペクト比が違うようですね。 –