首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android向java应用顺序发送图片出错-javax.imageio.IIOException:伪哈夫曼表定义

android向java应用顺序发送图片出错-javax.imageio.IIOException:伪哈夫曼表定义
EN

Stack Overflow用户
提问于 2012-09-03 18:18:10
回答 2查看 1.4K关注 0票数 2

我需要发送图像从安卓应用程序到java应用程序。基本上,我需要一个字节数组从图像发送到射频模块,transmits.Another射频模块接收,并发送字节数组到java应用程序,它必须使图像。

Android代码:

代码语言:javascript
复制
FileInputStream fis = new FileInputStream(myFile);
    byte[] b=new byte[(int)myFile.length()];        
    fis.read(b);server.send(b);

Java代码:

代码语言:javascript
复制
FileOutputStream fwrite = new FileOutputStream(new File("my_xml"),true);
                                fwrite.write(bb);//bb is a byte from rf using input stream as soon as a byte comes it is read to file. This is necessary for some other reasons
                                fwrite.flush();
                                fwrite.close();

获取完整文件后:

代码语言:javascript
复制
FileInputStream fir=new FileInputStream("my_xml");
        final BufferedImage bufferedImage = ImageIO.read(fir);
        ImageIO.write(bufferedImage, "bmp", new File("image.bmp"));
        fir.close();

我收到错误javax.imageio.IIOException:伪造的哈夫曼表格定义rf工作正常,因为文本文件正在发送没有jpeg代码的perfectly.Please help.Even即使在将扩展名改为jpeg之后也不能提供图像

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-11 16:20:27

该错误表示无法读取图像文件,因为格式为wrong.That,某些字节丢失或错误或位置不正确,因此无法解码文件。我的rf传输没有像tcp/ip这样的协议,因此一些字节由于通信通道中的错误而丢失,从而导致错误。

票数 0
EN

Stack Overflow用户

发布于 2012-09-11 16:39:30

您不需要仅仅为了复制文件而使用ImageIO。只需读写字节即可。

您的代码还存在其他问题:

  1. 您假定read(byte[])会填充缓冲区。检查Javadoc.
  2. ,你也假设文件长度适合int。如果是这样,那也没关系。如果没有,你就完蛋了。
  3. 你似乎是在打开和关闭接收到的每个字节的FileOutputStream。这是最低效的。打开它一次,写下所有的东西,在it.
  4. flush()是redundant.
  5. You之前关闭close()我们将图像存储在一个叫做'my_xml‘的文件中。这只会引起混淆,如果还没有的话,

  1. ,你甚至不需要这个文件。直接从输入流加载图像即可。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12245922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档