Image を Byte Array に変換してデータベースに保存しようとしています。ImageIO メソッドを使用したイメージからバイトへの変換およびバイトからイメージへの変換は、データベースに保存する前に完全に正常に機能します。しかし、データベース ImageIO からバイトを取得すると、null が返されます。
FileInputStream fis = new FileInputStream(picturePath);
BufferedImage image = ImageIO.read(new File(picturePath));
BufferedImage img = Scalr.resize(image, Scalr.Mode.FIT_EXACT, 124, 133, Scalr.OP_ANTIALIAS);
ByteArrayOutputStream ByteStream = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", ByteStream);
ByteStream.flush();
byte[] imageBytes = ByteStream.toByteArray();
ByteStream.close();
PersonImage = imageBytes;
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(PersonImage);
BufferedImage ImageForBox = ImageIO.read((InputStream)byteArrayInputStream);
PersonImageBox.setIcon(new ImageIcon((Image)ImageForBox));
上記のコードは、画像バイトを DB に保存する前に行うことです。Image のサイズを変更し、それをバイトに変換してから、別の方法で変換して JLabel に表示すると、正常に動作します。しかし、データベースからバイトを取得して同じコードを使用すると、つまり
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(PersonImage); // PersonImage are bytes from dB.
BufferedImage ImageForBox = ImageIO.read((InputStream)byteArrayInputStream);
PersonImageBox.setIcon(new ImageIcon((Image)ImageForBox));
この場合、ImageIO は null を返します。助けてください。