使用PHP调整图像大小,检测最长边并根据调整大小?

我正在使用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

上一篇:php – 比例图像调整大小


下一篇:BLOB-PHP调整图片大小