【发布时间】:2018-06-21 04:24:49
【问题描述】:
我正在使用 Imagick PHP 扩展来将 GIF 图像调整为多种尺寸。当我尝试使用 3mb 大小的 GIF 图像时,它不会调整大小。但是对于小于 1mb 的图像,它们会成功调整大小。
如果有其他人遇到过这个问题,请指教!
这是我的代码
if ($extension === 'gif') {
$imagick = new Imagick($_FILES['file']['tmp_name']);
foreach ($imageFolders as $imageFolder => $size) {
if ($imagick->getImageWidth() > $size['minWidth']) {
$width = $size['maxWidth'];
$height = $size['maxWidth'];
} else {
$width = $imagick->getImageWidth();
$height = $imagick->getImageHeight();
}
$imagick->coalesceImages();
do {
$imagick->scaleImage($width, $height, Imagick::FILTER_BOX, 1);
} while ($imagick->nextImage());
$imagick = $imagick->deconstructImages();
$imagick->writeImages($imagePath, true);
}
$imagick->clear();
$imagick->destroy();
}
结果:转换列表资源
File Area Memory Map Disk Thread Time
-------------------------------------------------------------------------------
768 7.951GB 3.7025GiB 7.4049GiB unlimited 2 unlimited
【问题讨论】:
-
请显示您的命令?你的 Imagemagick 是什么版本?输入图像尺寸和调整后的尺寸是多少? Imagemagick policy.xml 文件中有哪些限制?你得到什么错误信息?您可以在 Imagemagick 命令行中进行相同的调整大小吗?那样有用吗?也许服务器对输入或输出文件的大小进行了限制?
-
@fmw42 我已经更新了这个问题。我没有使用命令,我使用的是 imagick php 代码。 myserver 允许的 mx_upload_filesize 是 300m。我没有使用 imagemagicpolicy.xml?我需要将它与 php pls 建议一起使用吗
-
你确定upload_max_filesize 300M听起来很多,我的服务器限制是2M。 post_max_size 设置为多少?
-
@user3647971 我用了同样的方法。但在我的系统上,每个图像都必须根据来自 foreach 循环的宽度/高度调整为 6 种不同的尺寸。当我尝试上传一个大小为 3mb 的文件时,它要么调整为一种大小,而其他大小不会生成,否则不会生成调整大小的大小
标签: php imagemagick gif image-resizing imagick