BufferedImage:文本叠加并返回
对文本绘制坐标的误解
在你当前的代码中,文本未按预期显示,因为您引用了错误的坐标 拉绳()。它使用 (x, y) 作为绘制字符串最左边字符的基线,而不是文本的绝对位置。
调整文本基线
至为了弥补这一点,调整你的 y 坐标以适应字体的高度:
gO.drawString(this.text, this.x, this.y + 12);
这假设你正在使用基线为 12px 的字体。如有必要,您可以相应地调整偏移量。
颜色模型注意事项
值得注意的是,您还可能会遇到由于图像中使用的颜色模型而导致的不兼容问题。考虑使用合适的颜色模型渲染图像,然后使用以下方法在原位修改它:
private BufferedImage process(BufferedImage image) { Graphics2D g2d = image.createGraphics(); // Code to overlay text... g2d.dispose(); return image; }
在这种方法中,文本直接绘制到现有图像上,确保兼容性。
完整更正代码
protected BufferedImage Process2(BufferedImage image){ Graphics2D gO = image.createGraphics(); gO.setColor(Color.red); gO.setFont(new Font( "SansSerif", Font.BOLD, 12 )); gO.drawString(this.text, this.x, this.y + 12); System.err.println(this.text+this.x+this.y); return image; }
以上是为什么我的文本叠加不能正确显示在 BufferedImage 上?的详细内容。更多信息请关注PHP中文网其他相关文章!