使用JAI擴展Java Image的技巧
發(fā)表時間:2023-08-05 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]Java Image功能一直都在增強,但是向磁盤寫一個圖像文件或者返回一個PNG或JPEG依然比較難實現(xiàn)。但是我們可以使用Java Advanced Imaging(JAI)API來解決這個問題。J...
Java Image功能一直都在增強,但是向磁盤寫一個圖像文件或者返回一個PNG或JPEG依然比較難實現(xiàn)。但是我們可以使用Java Advanced Imaging(JAI)API來解決這個問題。JAI可以從SUN的Java站點下載,它包含在JDK 1.4的javax.imageio包中。
Windows中提供一個installation.exe文件提供JAI的自動安裝,而UNIX和Linux中則沒有。雖然JAI可以運行在純Java模式,但是同時也提供有Windows、Linux以及UNIX的本地庫,這樣可以提高運行速度。
下面的例子是安裝在蘋果的OS X上的JAI,所以我們選擇純Java模式。要安裝JAI,你需要jai tar.gz文件中的一個。將三個重要的jar文件,mlibwrapper_jai.jar, jai_codec.jar, and jai_core.jar放到你的classpath中。我們推薦將他們放到你的JDK的jre/lib/ext目錄下。
對于Java來說,JAI是一個奇怪的系統(tǒng),不像其他的方面有很多方法需要了解,這里只有一個叫做JAI的高級類和一些輔助方法。這些方法的第一個參數(shù)是一個操作類型名字,所以我們將會看到這樣的代碼:
source = JAI.create("fileload", .. );
JAI.create("extrema", src, ...);
JAI.create("histogram", src, ...);
在這個系統(tǒng)中,你可以很容易的添加你自己的或者第三方的功能,對類型的要求比較松,所以利用它進行開發(fā)難度比較大。
將一個AWT圖像轉(zhuǎn)化成一個PNG文件需要下面的一小段代碼:
import java.awt.Image;
import java.awt.image.renderable.ParameterBlock;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
.....
Image img = ....
OutputStream out =....
ParameterBlock pb = new ParameterBlock().add(img);
PlanarImage src = (PlanarImage) JAI.create("awtImage", pb);
JAI.create("encode", src, out, "PNG", null);
從上面的例子可以看出向create方法傳遞參數(shù)有兩種方法。新方法是使用ParameterBlock包含所有的參數(shù)。我們使用這種方法實現(xiàn)了awtImage操作。老方法是則使用一個重載方法,現(xiàn)在已不提倡使用,但是我們可以使用這種方法實現(xiàn)解碼操作。
上面的代碼將把一個Image編碼成為一個PNG并將其寫入OutputStream中