代码之家  ›  专栏  ›  技术社区  ›  z -

缓冲图像旋转

  •  0
  • z -  · 技术社区  · 16 年前

    在梯度为1度的情况下,围绕缓冲图像的中心旋转的最佳方式是什么?

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

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

    4 回复  |  直到 13 年前
        1
  •  3
  •   Sandeep Datta    13 年前

    这样一个小角度的旋转质量会随着图像的大小而变化很大。你的形象有多大?

    [在操作编辑问题以指示图像大小之后]

    在我看来,除了90度的倍数(假设它是一个正方形)外,图像对于任何有意义的旋转来说都太小了。恐怕这需要一个图形设计师手工完成,以获得最佳质量。

    [另一种选择]

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

        2
  •  2
  •   jedierikb grijalvaromero    16 年前

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

    g2d.setRenderingHint(
        RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON
    );
    
        3
  •  1
  •   Zarkonnen    16 年前

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

    • 通过将图像绘制到新的bufferedimage上,将图像放大8倍。
    • 通过绘制由affinettransform转换的图像来旋转图像
    • 通过将其绘制到另一个新的bufferedimage上,再次将其缩小

    任何低水平的文物都应该在缩小的过程中消失。这也许不是最快的选择,但它可能会做你想做的事情,最少的麻烦-更复杂的解决方案可能归结为在幕后做同样的事情。

        4
  •  0
  •   jedierikb grijalvaromero    16 年前

    下面是一些链接,解释了在对图标应用转换时您可能希望如何继续。

    Java 2D欺骗:反锯齿图像变换 http://weblogs.java.net/blog/campbell/archive/2007/03/java_2d_tricker_1.html

    BufferedImage中光栅或数据缓冲区的子像素采样。 http://forums.java.net/jive/thread.jspa?messageID=204921&tstart=0