imagettftext 给出奇怪的结果

imagettftext giving weird results

尝试在 php 中的现有图像上绘制一些文本,但得到奇怪的结果。

我有这张图片

我试图用白色文本在上面画一个数字,但我得到了这个结果

代码如下:

<?php


    $font = "files/fonts/open_sans/OpenSans-Regular-webfont.ttf";
    $image = imagecreatefrompng('images/icons/marker_icon.png'); 
    $white = ImageColorAllocate($image, 255,255,255);
    imagettftext($image, 1, 1, 1, 1, $white, $font, $_GET['count']);
    header("content-type: image/png");
    imagepng($image);
    imagedestroy($image);


?>

第一次在图片上画画,所以我不知道我做错了什么。

问题出在你的形象上,我不确定是怎么回事或为什么,但它被搞砸了。我在照片编辑器中打开它并使用不同的名称将其重新保存为 PNG 并且它有效。此外,您的文本不会显示,因为您的字体大小设置为 1,并且它从 xy 1,1 开始。它应该反映如下:

<?php
    $font = "files/fonts/open_sans/OpenSans-Regular-webfont.ttf";
    $image = imagecreatefrompng('images/icons/marker_icon.png'); 
    $white = ImageColorAllocate($image, 255,255,255);
    imagettftext($image, 15, 0, 10, 35, $white, $font, $_GET['count']);
    header("content-type: image/png");
    imagepng($image);
    imagedestroy($image);
?>

PHP Manual imagettftext

想通了。由于我的图像有很多透明度,我不得不将 imageAlphaBlending 设置为 true

    <?php
            $font = "files/fonts/open_sans/OpenSans-Regular-webfont.ttf";
            $image = imagecreatefrompng('images/icons/marker_icon.png'); 
            $white = ImageColorAllocate($image, 255,255,255);


            imageAlphaBlending($image, true);
            imageSaveAlpha($image, true);


            imagettftext($image, 15, 0, 10, 35, $white, $font, $_GET['count']);
            header("content-type: image/png");
            imagepng($image);
            imagedestroy($image);
        ?>