Я хотел бы создать прозрачный png некоторого заданного текста. Я не хочу указывать ширину и высоту изображения, но автоматически меняю размер текста. Я экспериментировал как с imagemagick, так и с PHP, однако, не получил этого. Как мне это сделать, используя любую из этих технологий или любую другую технологию? Кроме того, почему одна технология лучше, чем другая?Создать прозрачный png заданного текста
ImageMagick решение
работ, за исключением того, требуется размер изображения, которое будет указано вместо автоматического размера к размеру текста.
convert -size 560x85 xc:transparent -font Palatino-Bold -pointsize 72 -fill black -stroke red -draw "text 20,55 'Linux and Life'" linuxandlife.png
PHP Решение
Работы, кроме котлет немного с правой стороны. Кроме того, если я делаю несколько изображений с текстом того же размера шрифта и типа шрифта, и все они имеют заглавные буквы, высота изображений не одинакова, но я бы ожидал, что они будут одинаковыми. Кроме того, сегодня я впервые играл с функциями изображения, и, пожалуйста, дайте мне знать, если я делаю что-то еще неправильное.
<?php
$font_size = 11;
$angle=0;
//$fonttype="/usr/share/fonts/liberation/LiberationMono-Regular.ttf";
$fonttype="/usr/share/fonts/dejavu/DejaVuSans.ttf";
$text='Some text';
$file='MyFile.png';
$bbox = imagettfbbox($font_size, $angle, $fonttype, $text);
$x1 = $bbox[2] - $bbox[0];
$y1 = $bbox[1] - $bbox[7];
$im = @imagecreatetruecolor($x1, $y1);
imagesavealpha($im, true);
imagealphablending($im, false);
$color_background = imagecolorallocatealpha($im, 255, 255, 255, 127);
imagefill($im, 0, 0, $color_background);
$color_text = imagecolorallocate($im, 255, 0, 0);
imagettftext($im, $font_size, $angle, 0, $font_size, $color_text, $fonttype, $text);
imagepng($im,$file);
imagedestroy($im);
?>
Это выглядит нормально для меня, не видя каких-либо культур с правой стороны в моих тестах PHP. – waraker
@waraker Что вы используете для просмотра изображения? – user1032531
Сценарий создает это в корне: http://pic.imagecrisis.com/qysl4.png – waraker