Paw*_*cza -2 java arrays byte image
我有一个非常有趣的问题,我正在使用Java将jpg图像转换为字节数组,如下所示:
> public byte[] toBytes(String file) throws IOException {
File img = new File(file);
BufferedImage image = ImageIO.read(img);
WritableRaster r = image.getRaster();
DataBufferByte data = (DataBufferByte) r.getDataBuffer();
return data.getData();
}
Run Code Online (Sandbox Code Playgroud)
这显然只是系统的一部分,但请相信我的单词^ _ ^:这个方法返回一个字节数组,但是当我给它一个大小约20,000字节的.jpg文件时(Linux - 右键单击图像 - > properties - > size显示为大约20 000字节),获得的字节数组长度超过345 000,即345 000字节(所有这些都初始化为某些值,而不仅仅是0-s).你们知道为什么会这样吗?
Jpeg是一种高度压缩的图形格式.它使用各种技巧以尽可能少的字节对图像进行编码,而不会使其看起来与原始图像有太大不同(至少就人眼而言).
但是,当您使用光栅化图像时image.getRaster(),图像会被解码.恢复所有压缩技巧以创建每个像素3个字节的未压缩图像(一个用于红色,绿色和蓝色).
如果由于某种原因需要压缩的JPEG数据,请File直接使用a 访问该对象FileInputStream.
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |