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