从java中的jpeg转换为字节

时间:2016-07-28 19:15:20

标签: java byte jpeg bufferedimage

我想在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课程出错了。

1 个答案:

答案 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();
    }
}