2016-03-01 4 views
2

Попытка нарисовать текст на уже существующем изображении в php, но получить странные результаты.imagettftext дает странные результаты

У меня есть этот образ enter image description here

, и я пытаюсь сделать ряд на нем с белым текстом, но я получаю этот результат enter image description here

Вот код:

<?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); 


?> 

Первый раз, рисуя изображение, поэтому я понятия не имею, что я делаю неправильно.

ответ

0

Фигурные его. Поскольку существует много прозрачности в моем образе, я должен был установить 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); 
     ?> 
0

Проблема была в вашем изображении, я не уверен, как и почему, но это было испорчено. Я открыл его в редакторе фотографий и переписал его другим именем как PNG, и он сработал. Кроме того, ваш текст не будет отображаться, потому что ваш размер шрифта установлен на один, и он начинается с 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

+0

Что фоторедактор вы использовали? Я использую фотошоп, и я попробовал это, и он не сработал. –

+0

Краска ха-ха. Возможно, это связано с цветами, которые использует Photoshop. – spencdev