7

私はRESTeasyでこのサービスを利用しています:

@GET
@Path("/{name}")
@Produces("image/jpeg")
public BufferedImage get(@PathParam("name") String name) {

    Monitor m = Monitor.getMonitor(name);

    if (m == null) {
        return null;
    }

    return m.getImage();
}

それから私は要求の後に得る

Could not find MessageBodyWriter for response object of type: java.awt.image.BufferedImage of media type: image/jpeg

画像を応答に取り込む「直接的な方法」はありますか?


道順を教えてくれた@Robertに感謝します。ここで動作するコード:

@GET
@Path("/{name}")
@Produces("image/jpeg")
public byte[] get(@PathParam("name") String name) {

    Monitor m = Monitor.getMonitor(name);

    if (m == null) {
        return null;
    }

    ByteArrayOutputStream bo = new ByteArrayOutputStream(2048);
    try {
        ImageIO.write(m.getImage(),"jpeg",bo);
    } catch (IOException ex) {
        return null;
    }

    return bo.toByteArray();
}
4

1 に答える 1

8

あなたはしようとするべきです

  • BufferedImageJPGとしてエンコードします。クラスを見てみるjavax.imageio.ImageIO
  • を返すメソッドを宣言しますbyte[]
  • java.awt.headless=trueアプリケーションが起動されていない(つまり、グラフィック サブシステムがない)サーバー上で常に実行されることを確認してください。

それがうまくいくかどうか私たちに知らせてください.

于 2012-04-15T15:27:33.337 に答える