我想在Java中从JPEG转换字节数组。下面的代码错误地提出了我的请求。
BufferedImage img=Image.read("C:\blabla");
WritableRaster raster=img.getRaster();
DataBufferByte buffer=(DataBufferByte)raster.getDataBuffer();
byte[] jpegbytes=buffer.getData();
当我执行它时会给出错误的字节数。 JPEG在磁盘上的大小为845.941字节。但是,它在jpegbytes
中返回大小2 359 296字节。如何才能获得正确的字节值?我认为,BufferedImage
课程出错了。
答案 0 :(得分:0)
您可以通过将其FileInputStream的内容写入ByteArrayOutputStream并调用toByteArray()来将任何文件写入字节数组。
public byte[] fileToBytes(String filename) throws IOException {
final byte[] buffer = new byte[256];
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
try (InputStream in = new FileInputStream(new File(filename))) {
int bytesRead;
while ((bytesRead = in.read(buffer)) > 0)
out.write(buffer, 0, bytesRead);
}
return out.toByteArray();
}
}