とても簡単ですが、直感的ではありません。
延長する必要がありますImageTranscoder。createImageメソッド内で を割り当て、BufferedImageメンバー変数としてキャッシュし、それを返します。writeImageメソッドが空です。を取得するには、ゲッターを追加する必要がありますBufferedImage。
次のようになります。
    class MyTranscoder extends ImageTranscoder {
        private BufferedImage image = null;
        public BufferedImage createImage(int w, int h) {
            image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
            return image;
        }
        public void writeImage(BufferedImage img, TranscoderOutput out) {
        }
        public BufferedImage getImage() {
            return image;
        }
    }
ここで、イメージを作成するには、トランスコーダのインスタンスを作成し、設定によって目的の幅と高さを渡しますTranscodingHints。最後に、TranscoderInput から null ターゲットにトランスコードします。次に、トランスコーダで getter を呼び出して画像を取得します。
呼び出しは次のようになります。
    MyTranscoder transcoder = new MyTranscoder();
    TranscodingHints hints = new TranscodingHints();
    hints.put(ImageTranscoder.KEY_WIDTH, width);
    hints.put(ImageTranscoder.KEY_HEIGHT, height);
    transcoder.setTranscodingHints(hints);
    transcoder.transcode(new TranscoderInput(url), null);
    BufferedImage image = transcoder.getImage();
シンプルですね。(ええ、そうです。それを理解するのに2週間しかかかりませんでした。ため息。)