使用PHP

时间:2015-09-23 06:10:04

标签: php image image-resizing

我一直致力于编写用户提供图像路径的表单,然后脚本调整图像大小,然后将调整后的图像保存在服务器上。还有其他一些事情正在发生,但这就是我遇到问题的地方。我已经阅读了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);

    ...
}

现在,此文件中的其他所有内容都有效。在脚本中找到的所有数据库操作都按预期工作。图像文件夹的所有路径都是正确的。有没有人看到我应该采取不同的做法?正在创建的拇指的尺寸是正确计算的,而我能想到的唯一另一件事就是目标路径设置错误 - 尽管我没有看到任何突然出现在我身上的东西。

提前感谢您的帮助!

///更新了次要代码更改,以反映最近的尝试次数///

1 个答案:

答案 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';
}