有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

utf 8在Java中将字节序列转换为jpeg文件

我正在使用Java将医疗仪器与我的PC连接起来。数据传输工作正常。问题在于,除了内容(字符串),数据还包含4幅Jpeg图像。整个流以utf-8编码。问题是,我能够提取jpeg的数据,但无法以正确的格式将其保存到文件中

我环顾四周,数据看起来很好(从ffd8开始,到ffd9结束)

我将字节数据存储在一个数组_tmp中。我试过以下方法

1)只是将字节写入文件

FileOutputStream _fos = new FileOutputStream(_filename);
_fos.write(_image_string.getBytes());
_fos.flush()
_fos.close();

当我试图打开文件时,出现了以下错误

enter image description here

然后,我尝试使用BuffereImage,如下所示

BufferedImage _bi = ImageIO.read(new ByteArrayInputStream(_tmp));
File _image = new File(_filename);
ImageIO.write(_bi,"jpg",_image);

为此,提出了以下例外情况

java.lang.IllegalArgumentException: image == null!  
at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(Unknown Source) 
at javax.imageio.ImageIO.getWriter(Unknown Source)

数据格式的规范粘贴在下面。(尽管它提到了BMP数据——文档中清楚地提到了它的jpeg格式)

enter image description here

我意识到这与编码有关。只是想不通。任何指点都将不胜感激


共 (0) 个答案