我正在使用PHP处理图像上传脚本,我发现有人提供了该脚本并尝试对其进行修改,但是,我遇到了一些问题.
我要执行以下操作:
检测图像的最长边(即纵向或横向)
然后调整图像大小,最长边为800px并保持比例.
这是我到目前为止的代码.对于横向图像,它可以正常工作,但对于纵向图像,则可以使它们像疯了似的失真.
PS.我正在制作更大的图像以及缩略图.
list($width,$height)=getimagesize($uploadedfile);
if($width > $height){
$newwidth=800;
$newheight=($height/$width)*$newwidth;
$newwidth1=150;
$newheight1=($height/$width)*$newwidth1;
} else {
$newheight=800;
$newwidth=($height/$width)*$newheight;
$newheight1=150;
$newwidth1=($height/$width)*$newheight;
}
$tmp=imagecreatetruecolor($newwidth,$newheight);
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);
解决方法:
您可能会误会:
当$width> $height表示风景.将最大宽度设置为800表示(高度/宽度)* 800 =新高度.另一方面,$height> $width表示将maxheight设置为800,因此(width / height)* 800是新宽度.
现在,您同时使用高/宽比而不是其他方式.例:
Image: 1600 (w) x 1200 (h)
Type: Landscape
New Width: 800
New Height: (1200 (h) / 1600(w) * 800 (nw) = 600
Image 1200 (w) x 1600 (h)
Type: Portrait
New Height: 800
New Width: (1200 (w) / 1600(h) * 800 (nh) = 600
希望您能理解我的意思,您只是将它们切换了:)另外请注意,您将肖像缩略图的乘以$newheight而不是$newheight1