【问题标题】:imagick getImageLength not working after crop imageimagick getImageLength 在裁剪图像后不起作用
【发布时间】:2015-11-08 15:12:45
【问题描述】:

我想裁剪一部分图像,然后将该部分上传到其他服务器。 我必须确保我上传的图片大小在 300k 以下。

$image = new Imagick( $path );
echo $image->getImageLength();

$image->cropImage( $image->getImageWidth(), $image->getImageHeight() / 4, 0, 0 );

echo $image->getImageLength();

我第一次使用 $image->getImageLength() 获取图像大小时会返回正确的图像值。 但是当我在cropImage之后获得图像大小时它返回0。

处理图像后如何获得正确的值?我想知道它是否足够小,可以上传。

【问题讨论】:

  • 肯定有更多的事情发生。您应该检查以确保 $image->getImageWidth()$image->getImageHeight() 产生非零数字。然后检查以确保$image->getImageHeight()/4 大于零。
  • 请随意发布一个示例图像,其中包含完整的代码示例。在那之前,我认为你的代码有错误。
  • @Whitecat 。最后我使用 strlen( $image->getImageBlob() ) 来获取图像文件大小。
  • 我可以确认我遇到了同样的问题。在我的例子中,我使用readImage() 打开一个文件,使用cropImage() 裁剪它,使用resizeImage() 调整它的大小,然后使用writeImage() 编写它。该文件完全按照我的预期创建、裁剪和调整大小,getImageWidth()getImageHeight() 返回正确的值。但是,getImageLength() 总是返回 0
  • @Bison 所以你可以试试我找到的方法。使用 strlen( $image->getImageBlob() ) 获取文件大小。它似乎返回了一个正确的值。

标签: php image imagick


【解决方案1】:

最后,我想我找到了在裁剪图像后获取文件大小的方法。

使用strlen( $image->getImageBlob() ) 将始终返回正确的值。

【讨论】:

    【解决方案2】:

    Imagick 库似乎只在图像以某种方式输出后计算长度。如果您在之前调用$image->getImageBlob() 之后调用$image->getImageLength(),它将返回正确的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2023-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多