我正在尝试使用php调整图像大小。当我调整大于500像素的图像时,我不断收到此错误,不知道为什么。
这是错误:
imagecopyresampled() expects parameter 2 to be resource, null given
这是我的代码不起作用:
$resize = new ResizeImage($targetFile);
$resize->resizeTo(1800, 1800);
$resize->saveImage($xxlFile, 100);
这是我的代码确实有效:
$resize = new ResizeImage($targetFile);
$resize->resizeTo(500, 500);
$resize->saveImage($xxlFile, 100);
我的剧本就在这里:
$this->newImage = imagecreatetruecolor($this->resizeWidth, $this->resizeHeight);
imagecopyresampled($this->newImage, $this->image, 0, 0, 0, 0, $this->resizeWidth, $this->resizeHeight, $this->origWidth, $this->origHeight);
我的图片是5616×3744。为什么它不能调整1800像素宽?
感谢。
答案 0 :(得分:1)
$this->image
为空...您的脚本在创建目标图像时失败,是否允许这么大的图片没有足够的内存?
进行测试,在运行ResizeImage()
:ini_set("memory_limit", "1024M");
之前执行此命令。
另外,记得加载一个5616×3744px图像需要63mb内存(24bit / 3byte图像),并将其调整为1800,1800px(24bit / 3byte)图像需要额外的10mb内存(通常是PHP设置)到64mb或32mb的内存。)
祝你好运![编辑] 所以你的500x500x3图像将需要750kb的内存,你的大图片将需要63 078 kb的内存,并且一起将在63 828 kb上,只是在64mb内存限制下:)