0

2次元画像として表現できるバイト配列を生成するメソッドがあります。この画像をバティックの背景画像として表示したいと思います。アレイを (イメージとして) ディスクに保存してから、batik にロードしたくありません。代わりに、配列をバティックに提供したいと思います。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();
    }

}

IのコンストラクターでandMyParsedURLDataを設定するprotocol = "file"path="another_image"、 によって返されるストリームに関係なく、別の画像が読み込まれopenStreamRawます。

助言がありますか?

4

1 に答える 1

0

最も簡単な方法は、イメージを一時ファイルに保存し、それを 経由File.toURI().toURL()で参照するだけで、Batik がロードします。カスタム プロトコル ハンドラは必要ありませんParsedURL。一時ファイルにはPNGまたはなど、Batik でサポートされている標準の画像形式を選択してください。JPEG

ParsedURLProtocolHandleraと a の両方を実装して一時ファイルを保存RegistryEntryし、Batik に登録することができます。それに関するドキュメントが Web サイトに少しありますが、それでも面倒です。理解するのに数時間かかりました (そして、コードは実際に共有する準備ができていません) が、最初に a または同様のファイルBufferedImageとしてエンコードせずに直接 Batik に渡すことができます。.png

于 2011-12-06T12:15:19.457 に答える