我的目标是创建一个文本图像并将其放在其他图像之上。这是我用来创建文本图像的命令:
String[] cp_img_arguments = {"convert",
"-size", width_size + "x",
"-background", background_colour,
"-pointsize", pointsize.toString(),
"-font", font_path,
"-fill",text_colour,
"caption:" + text,
destination};
为了计算我需要的图像大小,我像这样使用 FontsMetrics:
Font font = new Font(fontName, Font.PLAIN, pointsize);
Canvas canvas = new Canvas();
fontMetrics = canvas.getFontMetrics(font);
width_size = fontMetrics.stringWidth(toString());
虽然我经常生成文本被截断或多行的图像,这意味着我计算的宽度实际上对于文本来说是不够的。字体来自.ttf
文件。我相信这种错误计算的发生是因为 GraphicsMagick 中的密度/DPI 参数。我目前没有使用它(我相信默认为 55),但我想知道与 FontMetrics 计算的相比,它如何影响实际字体大小。
有没有人有使用 gm 生成带有文本的图像的经验?有什么想法可以使图像尺寸计算更准确吗?