Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从jpeg转换为字节_Java_Byte_Jpeg_Bufferedimage - Fatal编程技术网

在java中从jpeg转换为字节

在java中从jpeg转换为字节,java,byte,jpeg,bufferedimage,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

我想在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
中返回大小2359296字节。如何获得正确的字节值?我认为,
BufferedImage
类出错。

您可以将任何文件写入字节数组,方法是将其FileInputStream的内容写入ByteArrayOutputStream并调用toByteArray()


JPEG是压缩数据。如果您认为jpeg是“正确大小”,请获取文件大小,不要将图像读取到
buffereImage
。您使用的是什么
image
类?我在@4castle中没有看到任何
read
方法。这个类是
javax.imageio.imageio
,我猜OP是打错了。ı不知道。只有ı希望从jpeg转换字节而不会丢失。然后,ı将在diskWith
FileInputStream
中保存为on.bin格式。您的问题将JPEG文件的大小与图像的大小混淆。加载后的图像不再是JPEG,而是图像,并且已解压缩。
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();
    }
}