0

有一个 PHP 应用程序,其目的是在许多预定义的 PNG 图像上打印文本。它可以正常工作并以任何给定的字体和颜色打印抗锯齿文本。在 Java 中打印现有图像时有哪些特殊注意事项?

我厌倦了使用 Graphics2D 调用来打印相同的图像,但它不适用于下面的代码。

String imName = Config.getBlanketImage();
File file = new File(imName);
// BufferedImage im = new BufferedImage(400, 600, BufferedImage.TYPE_INT_ARGB); 
// graphics.setColor(new Color(bColor.getRed(), bColor.getGreen(), bColor.getBlue()));
// graphics.fillRect(0, 0, im.getWidth(), im.getHeight());
BufferedImage im = ImageIO.read(file);

graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
graphics.setFont(drawFont);
graphics.setColor(new Color(aColor.getRed(), aColor.getGreen(), a.getBlue()));
graphics.drawString(Config.getText1(), x, y);

文本以完全错误的颜色出现 - 背景的阴影,有时被黑色像素的细线包围。我不能发布图片,只有 2 个链接,所以把样本搞砸了。但是,如果我注释掉前三行并取消注释注释掉的行并打印在一个全新的图像上,颜色将是正确的并且抗锯齿将被打开。

我尝试了有无渲染提示,但没有任何区别,只是显示了我尝试过的所有内容。

4

0 回答 0