JPEG 形式の画像を表すバイト配列を受け取り、画像のサイズを返す単純なサーバー側コードがあります。
public String processImage(byte[] data) {
long startTime = System.currentTimeMillis();
ByteArrayInputStream stream = new ByteArrayInputStream(data);
BufferedImage bufferedImage;
bufferedImage = ImageIO.read(stream);
int height = bufferedImage.getHeight();
int width = bufferedImage.getWidth();
long endTime = System.currentTimeMillis();
return "height="+height+" | width="+width+" | elapsed="+(endTime-startTime);
}
動作しますが、許容できないほど遅いという問題があります。100KB の画像の場合、6 秒かかります。900KB の画像の場合、30 秒かかります。それは期待されていますか?バイト配列から bufferedImage への変換を高速化する方法はありますか?
参考までに、私がやろうとしているのは、高さ/幅をつかむことだけではありません。最終的には bufferedImage を処理したいと思います。したがって、高さ/幅の取得は単なるサンプル コードです。