特定のテキストの透明なpngを作成したいと思います。画像の幅と高さを指定したくありませんが、テキストのサイズに合わせて自動的にサイズを調整します。私は imagemagick と PHP の両方を試しましたが、完全には理解できませんでした。これらのテクノロジのいずれか、または他のテクノロジを使用して、どのように行うのでしょうか? また、ある技術が他の技術よりも優れているのはなぜですか?
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);
?>