2011-04-26 57 views
0

我有一種方法可以生成一個字節數組,它可以表示爲一個二維圖像。我想在蠟染中將此圖像顯示爲背景圖像。我不想將數組保存到磁盤(如圖),然後將其加載到蠟染。相反,我想提供數組到蠟染。我雖然使用ParsedURLData可以幫助我,但我無法弄清楚如何使它工作。有什麼建議麼?生成蠟染背景圖像

我打電話ParsedURL.registerHandler(new MyProtocolHanlder("myprotocol"));MyProtocolHanlder.parseURL返回MyParsedURLData

我以爲回我自己的流會工作,但它不。在下面的示例中,我簡單地從磁盤加載圖像並嘗試顯示它。

class MyParsedURLData extends ParsedURLData { 
    public MyParsedURLData() { 
    } 

    @Override 
    public InputStream openStreamRaw(String arg0, Iterator arg1) throws IOException { 
     return new File("some_image_here").toURI().toURL().openStream(); 
    } 

} 

如果在構造爲MyParsedURLData我設置protocol = "file"path="another_image",然後另一個圖像將被加載,無論是通過openStreamRaw返回什麼流。

有什麼建議嗎?

回答

0

最簡單的方法是將圖像保存到臨時文件,然後通過File.toURI().toURL()引用它,然後Batik將加載它。您不需要自定義協議處理程序或ParsedURL。選擇蠟染支持的標準圖像格式,如PNGJPEG作爲臨時文件!

您可以通過執行ParsedURLProtocolHandlerRegistryEntry來保存臨時文件,並將其註冊到Batik。在網站上有一些關於這方面的文檔,但這仍然是一件痛苦的事情。花了我幾個小時才弄清楚(代碼還沒有真正準備好共享),但我現在可以直接將BufferedImage傳遞給Batik,而無需先將其編碼爲.png或類似文件。