【发布时间】: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() ) 获取文件大小。它似乎返回了一个正确的值。