我有下面的代码将图像转换为字节数组。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
baos.flush();
byte[] imageBytes = baos.toByteArray();
baos.close();
我面临的问题是图像大小约为2.65MB。但是,imageBytes.length给我的值超过5.5MB。有人能让我知道我哪里出错吗?
答案 0 :(得分:4)
PNG并不总是忠实的往返格式。它的压缩算法会产生不同的结果。
编辑:同样适用于JPEG。
答案 1 :(得分:2)
我使用以下代码来解决问题。
FileInputStream fis = new FileInputStream(inputFile);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
}
} catch (Exception ex) {
}
byte[] imageBytes = bos.toByteArray();
礼貌:http://www.programcreek.com/downloads/convert-image-to-byte.txt 它似乎工作正常。如果你们中的任何人发现这种方法存在任何问题,请告诉我。