Когда я загружаю изображение, которое я хочу сжать с фиксированной шириной и высотой, я попробовал много. Я прикрепил свой код ниже:
$extension = getExtension($filename);
$extension = strtolower($extension);
if($extension=="jpg" || $extension=="jpeg" )
{
$src = imagecreatefromjpeg($tmpFilePath);
}
else
{
$src = imagecreatefromgif($tmpFilePath);
}
list($width,$height)=getimagesize($tmpFilePath);
$newwidth=1000;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
$newwidth1=540;
$newheight1=236;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);
$newwidth2=253;
$newheight2=($height/$width)*$newwidth2;
$tmp2=imagecreatetruecolor($newwidth2,$newheight2);
$newwidth3=840;
$newheight3=365;
$tmp3=imagecreatetruecolor($newwidth3,$newheight3);
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);
imagecopyresampled($tmp3,$src,0,0,0,0,$newwidth3,$newheight3,$width,$height);
$filename = "gallery/".$_FILES['egallery_img'.$i]['name'];
$filename1 = "gallery/ms". $_FILES['egallery_img'.$i]['name'];
$filename2 = "gallery/vs". $_FILES['egallery_img'.$i]['name'];
$filename3 = "gallery/medium". $_FILES['egallery_img'.$i]['name'];
imagejpeg($tmp,$filename,100);
imagejpeg($tmp1,$filename1,100);
imagejpeg($tmp2,$filename2,100);
imagejpeg($tmp3,$filename3,100);
imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);
imagedestroy($tmp2);
imagedestroy($tmp3);
$epaname = $filename;
unlink($deletImg);
unlink($msdeletImg);
unlink($vsdeletImg);
unlink($mdeletImg);
Я получаю ширину, как она указана в моем кодировании, но я не получаю правильную высоту.
Как я могу это решить? или есть кто-нибудь, кто может предложить мне другой способ решить это. Если я установил ширину и высоту, это значит, что мое изображение получает повреждение. Еще раз спасибо.
Я рекомендую класс SimpleImage, он очень прост в использовании.
Пример использования:
$img = new SimpleImage('source/path/of/your/image.jpg');
// Resize the image to 320x200
$img->resize(320, 200);
$img->save('destination/path/for/new-image.jpg');
Вы можете получить его из https://github.com/claviska/SimpleImage