繁体   English   中英

如何在上传时调整固定宽度和高度的图像

[英]How to resize image with fixed width and height while uploading

当我上传图像时,我想用固定的宽度和高度压缩,我已经尝试了很多。 我在下面附上了我的编码:

$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获取它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM