【问题标题】:Imagick resize in PHPImagick 在 PHP 中调整大小
【发布时间】:2014-05-23 03:30:24
【问题描述】:

我正在尝试在上传后调整图像大小。我有 2 个文件(view_project.php 和 user.inc.php)。
在 user.inc.php 中,我正在上传图像并返回一个包含已上传文件名称的数组。
在 view_project.php 中,我得到了该数组,在 foreach 中,我试图将图像大小调整为原始图像分辨率的 20% 或 60%。

这绝对行不通。图像上传到服务器但未调整大小。

  foreach($upload as $images_to_resize) {
      $file = ''.showConfigValues("img_source_admin").'/'.$images_to_resize; 

      $src = realpath($file);
      $dst = realpath($file); 
      $crop = false;

         list($old_w,$old_h) = getimagesize($file);

       if($old_w >= 1700 && $old_h >= 900) {

        $w = floor(($old_w / 100) * 20);
        $h = floor(($old_h / 100) * 20);
       }
        else {
         $w = floor(($old_w / 100) * 60);
         $h = floor(($old_h / 100) * 60);  
        }
          $picture = new Imagick($src);

          $picture->setImageResolution(300,300);
          autoRotateImage($picture); 
          $picture->resizeImage(684, 457, Imagick::FILTER_LANCZOS,1, false);
          $picture->writeImage($cropped);
          $picture->clear();
          $picture->destroy();

     }

我真的需要你的帮助。谢谢

【问题讨论】:

    标签: php imagemagick image-resizing imagick


    【解决方案1】:

    这可能很简单:我看不出您在哪里定义了“$cropped”。

    应该定义该变量,它应该是数组中每个图像的唯一值,并且还应该包含文件扩展名。例如:

    foreach($upload as $key => $images_to_resize) {
        $fileName = $_FILES["upload"]["tmp_name"][$key]
        $cropped = 'resized_'.$fileName;
        ...
        $picture->writeImage($cropped.'.jpg');
        ...
    

    我将 $key 添加到您的 foreach 以帮助从 $_FILES 数组中提取临时文件名并重用它。

    我从不使用自动旋转命令,但它看起来好像不适合对象格式。试试:

    $picture->autoRotateImage($picture); 
    

    您可能还想测试您的 imagemagick 安装和 php 插件:

    Verify ImageMagick installation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 2015-08-11
      • 2015-06-16
      • 2023-03-16
      相关资源
      最近更新 更多