0

围绕渐变为 1 度的中心旋转缓冲图像的最佳方法是什么?

我知道有 AffineTransform,但这会导致剪切和奇怪的拉伸或应该是空白的黑点。

编辑我正在处理的图像大小是图标大小,因此通常为 24x24 到 48x48 像素

4

4 回答 4

3

如此小角度的旋转质量会随着图像的大小而有很大的不同。你的图像有多大?

[OP编辑问题以指示图像大小后]

IMO 图像太小,无法进行任何有意义的旋转,而不是 90 度的倍数(假设它是一个正方形)。恐怕这需要由平面设计师手动完成,以获得最佳质量。

[另一种选择]

保留图像的高分辨率版本。将所有转换应用于此图像,然后按比例缩小以获得图标。

于 2009-02-19T19:00:42.400 回答
2

您是否尝试过设置图形上下文的抗锯齿?

g2d.setRenderingHint(
    RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON
);
于 2009-02-19T19:01:33.363 回答
1

作为一个快速而肮脏的修复,您是否考虑过以下方法:

  • 通过将图像绘制到新的缓冲图像上,将图像放大 8 倍
  • 旋转图像,通过仿射变换对其进行绘制
  • 通过将其绘制到另一个新的缓冲图像上,再次缩小它

在缩减过程中,任何低级伪影都应该消失。这可能不是最快的选择,但它可以用最少的麻烦做你想做的事——更复杂的解决方案可能归结为在幕后做同样的事情。

于 2009-03-04T14:39:41.683 回答
0

以下是一些链接,这些链接解释了在将转换应用于图标时您可能希望如何进行。

Java 2D 技巧:抗锯齿图像转换 http://weblogs.java.net/blog/campbell/archive/2007/03/java_2d_tricker_1.html

BufferedImage 中 Raster 或 DataBuffer 的子像素采样。 http://forums.java.net/jive/thread.jspa?messageID=204921&tstart=0

于 2009-03-04T13:45:56.837 回答