[英]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.