首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP imagettftext始终绘制黑色

PHP imagettftext始终绘制黑色
EN

Stack Overflow用户
提问于 2010-12-20 21:58:59
回答 3查看 3.1K关注 0票数 4

基本上,当我绘制文本时,它是这样结束的:http://i.stack.imgur.com/z675F.png,而不是我在PHP和函数中分配的颜色。代码:

代码语言:javascript
复制
    $finalImage = imagecreatefrompng($imageFile);
    $logo = imagecreatefrompng($logoImage);
    imagecopy($finalImage, $logo, $logoPosition['x'], $logoPosition['y'], 0, 0, imagesx($logo), imagesy($logo));
    $font = "arial.ttf";
    $fontSize = 10;
    $yOffSet = 15;
    $white = imagecolorallocate($finalImage, 255, 255, 255);
    foreach($pixelArray as $key => $x) {
        foreach($valueArray[$key] as $valueText) {

            imagettftext($finalImage, $fontSize, 0, $x, $yOffSet, $white, $font, $valueText);
            $yOffSet += 15;
        }
        $yOffSet = 15;
    }
    if($miscText != null) {
        foreach($miscText as $key => $text) {
            imagettftext($finalImage, $fontSize, 0, $text['x'], $text['y'], $white, $font, $text['text']);    
        }
    }
    imagepng($finalImage,$saveFileName.".png");
    imagedestroy($finalImage);

它以前是工作的,但后来它就停止了,我不知道为什么。那是在我改变了源图像之后(生成的很好),并且我没有接触到代码。我尝试了各种改变颜色的方法,但我不能让它显示在黑色以外的任何地方。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-20 22:20:49

通过将imagecolorallocate更改为imagecolorclosest修复了它,因为我已经在复制的徽标上添加了一些白色文本:

代码语言:javascript
复制
//       imagecolorallocate....
$white = imagecolorclosest($im, 255, 255, 255); 
票数 2
EN

Stack Overflow用户

发布于 2010-12-20 22:11:05

您是否检查过imagecolorallocate()函数是否返回布尔值false,如果分配失败,它是否会返回?如果$finalImage .png是8位,并且您的纯白色不在源图像的调色板中,则此调用将失败。您确实说您更改了源图像,所以这很可能是它现在损坏的原因。

代码语言:javascript
复制
$white = imagecolorallocate($finalImage, 255, 255, 255);
if ($white === FALSE) { // note the === -> strict type comparison
    die("Failed to allocate color 255/255/255")
}

该函数还将返回一个表示颜色三元组的数字,在本例中它将返回0xFFFFFF。您可以尝试将其直接传递到imagegetttftext()调用中,看看这是否有帮助。

票数 3
EN

Stack Overflow用户

发布于 2016-09-13 19:59:55

使用imagecreatetruecolor()分配颜色:

代码语言:javascript
复制
$width = 500; //whatever width you need
$height = 200; //whatever height you need
$white = imagecolorallocate(imagecreatetruecolor($width, $height), 255, 255, 255);

这对我很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4490308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档