4

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 を返します。助けてください。

4

0 に答える 0