我在编写/读取BufferedImage
java数据类型时遇到问题。写入时似乎对插入的数据没有问题,但在阅读时,使用" getObject"来自java ResultSet的方法(由于某些特殊原因,该方法必须是getObject
,因此我可以读取任何类型的数据,然后将其转换)。当我将BufferedImage dataType插入mysql时,我正在使用inputStream,它在字节数组的长度上有42559,但是我正在使用getObject
读取它,长度不再是42559它的大小转为42586,所以我无法用" ImageIO.read" method(返回null)
这是我的插入代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write((BufferedImage) vals[i], "jpg", baos);
InputStream is = new ByteArrayInputStream(baos.toByteArray());
ps.setBinaryStream(i + 1, is);
这是我的阅读代码:
Object set = rs.getObject(i + 1);
这是我转换为BufferedImage代码:
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(set);
o.flush();
byte res[] = b.toByteArray();
o.close();
b.close();
System.out.println("Cek variabel: " + set.getClass() + "-" + res.toString() + "-" + res.length);
Blob blob = KubraLib.Conn.ConnSelect.getMySQLConn().createBlob();
blob.setBytes(1, res);
System.out.println("Cek variabel: " + blob.toString());
InputStream is = blob.getBinaryStream();
System.out.println("Cek variabel: " + is.toString());
bi = ImageIO.read(is);
System.out.println("Cek hasil: " + bi.toString()); <-- Returns java.lang.NullPointerException
is.close();
任何帮助将不胜感激:)。而且我对Stack Overflow相对较新,如果这篇文章中有任何错误,我道歉:))