简体   繁体   English

从java中的jpeg转换为字节

[英]Convert to bytes from jpeg in java

I want to convert byte array from JPEG in Java. 我想在Java中从JPEG转换字节数组。 Below code makes wrong my request. 下面的代码使我的请求错误。

BufferedImage img=Image.read("C:\blabla");
WritableRaster raster=img.getRaster();
DataBufferByte buffer=(DataBufferByte)raster.getDataBuffer();
byte[] jpegbytes=buffer.getData();

When I execute it gives wrong byte number. 当我执行它时给出错误的字节数。 JPEG has size 845.941 bytes on disk. JPEG在磁盘上的大小为845.941字节。 But, it returns size 2 359 296 bytes in jpegbytes . 但是,它以jpegbytes返回大小2 359 296字节。 How can I get to correct byte value? 如何才能获得正确的字节值? I think, BufferedImage class gets take wrong. 我认为, BufferedImage类会出错。

You can write any file to a byte array by writing the contents of its FileInputStream to a ByteArrayOutputStream and calling toByteArray(). 您可以通过将其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();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM