画像のバイナリイメージをHTTPレスポンスとして出力
package test.action;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
public class OutImgAction {
public String id;
//
// 画像をhttpレスポンスのボディとして出力してみるテスト
//
// 呼ぶときは↓こんなふうにします
// http://localhost:8080/test/outImg/output/1
//
@Execute(validator=false, urlPattern = "output/{id}")
public String output() {
try {
URL url = getClass().getResource("../../data/sample.png");
BufferedImage im = ImageIO.read(url.openStream());
HttpServletResponse response = ResponseUtil.getResponse();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(sos);
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("jpeg").next();
iw.setOutput(ios);
//IDを表示してみる
Graphics2D g = im.createGraphics();
g.setColor(Color.BLACK);
g.drawString("id="+id, 20, 20);
g.dispose();
iw.write(im);
ios.close();
sos.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Execute(validator = false)
public String index() {
return "/";
}
}