我一直致力于编写用户提供图像路径的表单,然后脚本调整图像大小,然后将调整后的图像保存在服务器上。还有其他一些事情正在发生,但这就是我遇到问题的地方。我已经阅读了20篇关于如何做到这一点的不同文章,并在这里查看了其他回复,但即使我有一些看似相同的东西,它也无法奏效。这是我最近的尝试:
function upload($rowID, $fName, $lName)
{
/*** get the original file name & path **/
$thumb_data = $_FILES['image_name']['name'];
$imgpath = "../images/Employee_Photos/".$thumb_data;
/*** Get the size of the source image and set ***/
/*** the dimensions for the scaled image ***/
$size = getimagesize($imgpath);
$image_width = $size[0];
$image_height = $size[1];
$aspect_ratio = (float)($size[0] / $size[1]);
$thumb_height = 50;
$thumb_width = $thumb_height * $aspect_ratio;
/*** set the thumb file name & path ***/
$thumb_name = $fName."_".$lName."_thumb.jpg";
$savepath = "../images/Employee_Photos/thumbs".$thumb_name;
/*** get the image source ***/
$src = ImageCreateFromjpeg($imgpath);
/*** create the destination image ***/
$destImage = ImageCreateTrueColor($thumb_width, $thumb_height);
/*** copy and resize the src image to the dest image ***/
ImageCopyResampled($destImage, $src, 0,0,0,0, $thumb_width, $thumb_height, $image_width, $image_height);
$thumbnail = $destImage;
/*** given the image thumb and file location, ***/
/*** save the created image at that location ***/
imageJPEG($thumbnail, $savepath,100);
...
}
现在,此文件中的其他所有内容都有效。在脚本中找到的所有数据库操作都按预期工作。图像文件夹的所有路径都是正确的。有没有人看到我应该采取不同的做法?正在创建的拇指的尺寸是正确计算的,而我能想到的唯一另一件事就是目标路径设置错误 - 尽管我没有看到任何突然出现在我身上的东西。
提前感谢您的帮助!
///更新了次要代码更改,以反映最近的尝试次数///
答案 0 :(得分:1)
尝试使用Imagick php扩展程序。在您的代码中,您可能不了解如何计算正确的比率?
我想象的拇指代码:
$image = 'path/to/image.jpg';
$maxsize=450;
$imagick = new \Imagick($image);
$height = $imagick->getImageHeight();
$width = $imagick->getImageWidth();
if($height > $maxsize || $width > $maxsize){
if($height <= $width){
$imagick->resizeImage($maxsize,0, \Imagick::FILTER_LANCZOS, 1);
}
else{
$imagick->resizeImage(0,$maxsize, \Imagick::FILTER_LANCZOS, 1);
}
}
$imagick->setImageCompression(\Imagick::COMPRESSION_JPEG);
$imagick->setImageCompressionQuality(75);
$imagick->stripImage();
if($imagick->writeimage($savePath.$uniqueName.'-thumb.jpg')){
$imagick->destroy();
return $uniqueName.'-thumb.jpg';
}