2009-02-19 70 views
0

什麼是旋轉一個bufferedimage關於其中心梯度爲1度的最佳方式?BufferedImage旋轉

我知道有AffineTransform,但會導致剪切和怪異的拉伸或應該是空白的黑點。

編輯我處理的圖像的大小是圖標的大小,因此通常24x24的高達48×48像素

回答

3

旋轉,這樣一個小角度將與圖像的大小變化很大的質量。你的形象有多大?

[OP的編輯的問題後,以指示圖像的大小]

IMO的圖像是比90度(假定其爲正方形)的倍數以外的任何有意義的旋轉太小。恐怕這需要由圖形設計師手動完成以獲得最佳質量。

[另一種替代方法]

保持圖像的高分辨率版本。將所有轉換應用到該圖像,然後縮小以獲取圖標。

+0

一般在24x24像素到48x48像素之間,它是一個非常小的圖像 – 2009-02-19 19:08:45

2

您是否嘗試過設置圖形上下文的反鋸齒?

g2d.setRenderingHint(
    RenderingHints.KEY_ANTIALIASING, 
    RenderingHints.VALUE_ANTIALIAS_ON 
); 
1

作爲一個快速和骯髒的修復,您是否考慮了以下方法:

  • 規模同比例如,8倍的圖像,通過繪製它推上了一個新的BufferedImage
  • 旋轉圖像,通過繪製它根據AffineTransform
  • 規模回來再轉化下來,通過繪製它到另一個新的BufferedImage

在縮小規模期間,任何低級別的文物都應該消失。這可能不是最快的選擇,但它可以做到最少的大驚小怪 - 更復雜的解決方案可能歸結爲在幕後做同樣的事情。