imagecopyresampled()期望参数2为resource,给定null

时间:2016-11-14 03:09:34

标签: php

我正在尝试使用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像素宽?

感谢。

1 个答案:

答案 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内存限制下:)