【问题标题】:String antialiasing don't work when image rotate图像旋转时字符串抗锯齿不起作用
【发布时间】:2014-02-11 11:16:01
【问题描述】:

Java 中的字符串抗锯齿有一些问题。如果我使用此代码

g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

正常(不旋转字符串),一切都很好。但是,当我尝试在旋转图像上使用抗锯齿时,我在其中绘制字符串 - 这个字符串渲染没有抗锯齿功能。

这是我的代码示例,其中抗锯齿不起作用:

Graphics2D g = originalImage.createGraphics();

AffineTransform affineTransform2 = new AffineTransform();
affineTransform2.setToIdentity();
affineTransform2.translate(125, 325);
affineTransform2.rotate(Math.toRadians(345));

BufferedImage positionImage = new BufferedImage(100, 40, BufferedImage.TYPE_INT_ARGB);
Graphics2D positionImageG2D = positionImage.createGraphics();
positionImageG2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
positionImageG2D.setFont(getFont(30f));
positionImageG2D.drawString("Some Text",100, 40);
positionImageG2D.dispose();

g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.drawImage(positionImage, affineTransform2, null); 

【问题讨论】:

    标签: java image rotation bufferedimage antialiasing


    【解决方案1】:

    您不会将文本绘制到g(最后一行),因此您传递给KEY_TEXT_ANTIALIASING 的任何值都不会产生任何效果。

    您正在使用已消除锯齿的文本绘制旋转图像。尝试将KEY_INTERPOLATION 设置为VALUE_INTERPOLATION_BICUBICVALUE_INTERPOLATION_BILINEAR,这应该会影响图像的缩放和旋转。

    您可以尝试的另一件事是将文本(旋转)直接绘制到g,而不使用临时图像。也应该可以,但您可能需要调整相对于旋转的位置。

    【讨论】:

    • 谢谢!对我来说帮助KEY_INTERPOLATION 两种值变体!
    • 好!我将编辑答案以供将来参考。 :-)
    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多