2010-05-05 66 views
2

我正在開發一個小程序,它通過顏色來裁剪圖像。如何使用彩色圖案裁剪圖像?

這將是最簡單的解釋使用這個例子形象:

black with a purple splotch of color

我想創建一個新的形象正好與紫色的形式,沒有黑框。

有沒有人有任何想法?我使用Java 2D,所以我認爲我需要用第一個圖像的紫色區域創建一個Object「Shape」。

回答

5

如果圖像是從字面上像你展示一個,你可以:

  • 加載圖像到一個BufferedImage(與ImageIO.read())
  • 創建一個新的BufferedImage確保它具有alpha層(例如,將其類型設置爲BufferedImage.TYPE_4BYTE_ABGR)
  • 「手動」在加載的BufferedImage中依次遍歷每個像素,使用getRGB()獲取像素顏色並檢查它是否爲的黑色
  • 如果顏色爲黑色,則在新圖像中將對應的像素設置爲透明,否則從第一個圖像設置爲原始顏色(請參見setRGB()方法)。
  • 保存新圖像(使用ImageIO。寫())

有更有趣的方法,但這種簡單的方法是好的和易於理解的,並將爲你顯示的類型的圖像工作正常。

+0

很好的回答!最後我找到了解決方案!謝謝你! 再次感謝! – dafero 2010-05-05 12:36:50

2

您需要使用一些發現紫色區域的boundries洪水填充算法:

維基百科上有一個頁面具有優良的僞代碼和動畫。

http://en.wikipedia.org/wiki/Flood_fill

+0

感謝您的回答! Neil Coffey給了我最好的解決方案,不過謝謝! – dafero 2010-05-05 12:40:45