« ORCL0030CheckServer | トップページ | 最近3ヶ月の来院歴表示 »

2011年2月 7日 (月)

com.sun.image.codec の置き換え

com.sun.image.codec は今後使えなくなるかもしれないので,ImageIO で置き換えた方がいいらしい。

警告:com.sun.image.codec.jpeg.JPEGCodec は Sun が所有する API であり、今後のリリースで削除される可能性があります。
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(writer);

client/KarteEditor.java

/**
 * Courtesy of Junzo SATO
 * ImageIO by pns
 */
private byte[] getJPEGByte(Image image) {
  byte[] ret = null;
// BufferedOutputStream writer = null;
  try {
    JPanel myPanel = getUI();
    Dimension d = new Dimension(image.getWidth(myPanel), image.getHeight(myPanel));
    BufferedImage bf = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_RGB);
    Graphics g = bf.getGraphics();
    g.setColor(Color.white);
    g.drawImage(image, 0, 0, d.width, d.height, myPanel);

    ByteArrayOutputStream bo = new ByteArrayOutputStream();
//  writer = new BufferedOutputStream(bo);
//  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(writer);
//  encoder.encode(bf);
    ImageIO.write(bf, "jpeg", bo);
      
//  writer.flush();
//  writer.close();
    ret = bo.toByteArray();
  } catch (IOException e) {
    e.printStackTrace();
//  if (writer != null) {
//    try {
//      writer.close();
//    } catch (IOException e2) {
//      System.out.println("KarteEditor.java: "+ e2);
//    }
//  }
  }
  return ret;
}

"jpeg" を "png" に変えると,png 形式で保存されるようになる。保存した画像の読み出しは byte[] を ImageIcon に入れているだけなので(DocumentDelegater#getDocuments 参照),java 側で jpeg か png か判断してくれる。

« ORCL0030CheckServer | トップページ | 最近3ヶ月の来院歴表示 »

OpenDolphin」カテゴリの記事