为什么php imagefill总是黑的?

时间:2009-12-14 16:59:29

标签: php image png

这让我很生气。如果你告诉我为什么我在本地xampp安装中看到这个红色方块,我真的很感激。如果我在远程服务器(http://www.arreglaordenador.com/numberimage2.php)中运行代码,我会看到黑色而不是红色的方块。你有什么想法吗?

<?php

$im = imagecreatetruecolor(100, 100);

// sets background to red
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im, 0, 0, $red);

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?> 

由于

4 个答案:

答案 0 :(得分:2)

这是因为你使用imagecreatetruecolor()函数来创建图像而你的GD版本有bug。在某些GD版本中,imagecreatetruecolor()不会覆盖某些颜色函数(我不记得哪个)。你有两个解决方案。

  1. 请求您的托管服务将GD升级到最新的稳定版本。
    1. 使用imagecreate()功能创建图像标识符imagecreatetruecolor()

答案 1 :(得分:1)

您可以先尝试分配不同的颜色吗?

$black = imagecolorallocate($im, 0, 0, 0);
$red = imagecolorallocate($im, 255, 0, 0);

我不确切地知道为什么,但这看起来像是一个透明度问题(即由于某种原因选择红色作为透明色)。

最有可能的是,这是由于不同的GD版本。你能比较一下你在本地和远程哪一个吗?

答案 2 :(得分:1)

根据imagecreatetruecolor() documentation,您的服务器可能没有安装正确版本的GD图像库。

答案 3 :(得分:0)

这绝对是您服务器上的GD问题,因为您的代码在我的本地WAMP和我的托管帐户上运行良好。