【发布时间】:2016-11-19 19:09:06
【问题描述】:
我正在尝试使用 Imagick 和 php 保存图像。
当我打电话给saveImage() 或saveImageFile() 时,我得到了
致命错误:未捕获的异常“ImagickException”和消息“内存不足(案例 4)”
图像大约 1MB 大,脚本可以使用 256MB 内存,我认为应该足够了。磁盘上有足够的可用空间。
可能是什么问题?
代码如下:
<?php
list($type, $img) = explode(';', $img);
list(, $img) = explode(',', $img);
$data = base64_decode($img);
$image = new Imagick();
$image->readImageBlob($data);
$image->setImageFormat("jpeg");
$image->setInterlaceScheme(Imagick::INTERLACE_PLANE);
$image->writeImageFile(fopen($name.'-original.jpg','w'));
?>
如果我尝试使用file_put_contents() 而不是saveImage(),则会保存一个空文件。可能是服务器配置有问题?
【问题讨论】:
-
被引用的内存是 RAM 而不是磁盘。这可能发生在共享主机的情况下。如果您有专用服务器,请尝试将此类操作推送到后台作业:)
-
@raina77ow 图像格式为 JPEG。系统是 FreeBSD 8.3-RELEASE-p4 i386。 PHP 是 PHP 5.6.16
-
你检查过this tip吗?
-
@georoot 这是一个共享主机,但主机说我应该始终有至少 256MB 的可用内存。
-
转念一想,这个提示可能与您的情况无关。您能否分享更多细节 - 例如显示代码?另外,
ini_get('memory_limit')的结果是什么?