在java中从jpeg转换为字节
我想在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
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转换字节而不会丢失。然后,ı将在diskWithFileInputStream
中保存为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();
}
}