为新变量分配GOOD引用无法复制

时间:2010-03-11 04:13:25

标签: php gd

这是一个人为的例子,但它比我正在使用的代码更简洁地说明了我的问题 - 我已经测试了这个并且它表现出了问题:

$image = imagecreatefromjpeg('test.jpg');    
$copy_of_image = $image;

// The important bit
imagedestroy($image);

header('Content-type: image/jpeg');
imagejpeg($copy_of_image);

现在,我的期望是$copy_of_image就是这样,但是当我运行它时,它会失败,打印出所有内容的脚本的URL。注释掉imagedestroy()并且它可以正常工作。

$ image的var_dump提供:

resource(3) of type (gd) 

那为什么我不能复制这个呢?显然,作业$copy_of_image = $image正在创建一个引用,而不是一个副本 - 有没有办法阻止它?

1 个答案:

答案 0 :(得分:2)

resource本身是图片的参考。因此,无论您是复制还是引用 - 将其分配给另一个变量,资源仍然引用相同的图像。你只是制作两个指向同一图像的引用。如果您销毁图像(这是imagedestroy所做的),图像将不再可用,并且指向它的任何资源都将变为无效。

您需要使用imagecreatetruecolor创建新图像,然后使用imagecopy将第一张图像的内容复制到第二张图像。或者首先使用imagecreatefromjpeg使用两个单独的资源创建两个单独的图像。