2012-01-13 173 views
3

我需要在給定的四邊形內繪製一個BufferedImage。 我想這樣做:將矩形圖像繪製/翹曲爲四邊形圖像

enter image description here

我想貓變形被四邊形內繪製。

Graphics對象具有不同的繪製圖像的方法,但只能沿着X和Y軸拉伸它們(請參閱Graphics.drawImage方法)。

我夢想的是一種方法Graphics.drawImage()其中我指定了4個四邊形點的座標。有沒有簡單的方法來做到這一點?

回答

1

我不知道任何簡單的方法來做到這一點與標準的Java包。你當然可以實現你自己的雙線性或透視變換來處理四個角落圖像變形,但是誰願意做所有這些工作。

我認爲你最好的選擇是研究Java Advanced Imaging API(javax.media.JAI)。這裏是一篇文章,談論與JAI的透視變換:http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Geom-image-manip.doc.html#55959

+0

非常感謝。我會看看那個! – julien 2012-01-14 20:25:52

1

你會發現代碼如何在objective-c這裏https://github.com/hfossli/AGGeometryKit/。我相信它可以移植到Java。

+0

謝謝。我會嘗試將它移植到java中。 – julien 2013-03-15 15:00:54

+0

好的,很酷。你真正需要的唯一東西是在這裏找到的代碼:http://stackoverflow.com/a/12820877/202451。您應該可以使用該代碼爲java創建一個3d矩陣。這是在這個文件的底部找到相同的代碼https://github.com/hfossli/AGGeometryKit/blob/master/Source/AGQuad.m – hfossli 2013-03-15 17:47:49

+0

你需要一個4行和列的矩陣...我不' t認爲這將做http://developer.android.com/reference/android/graphics/Matrix.html – hfossli 2013-03-15 17:49:29