Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将ByteArray转换为图像_Java_Image_Bytearray - Fatal编程技术网

Java将ByteArray转换为图像

Java将ByteArray转换为图像,java,image,bytearray,Java,Image,Bytearray,我正在读取一个包含字节数组的文件。我下载了ApacheCommons IO库以使用FileUtils的readFileToByteArray方法 File file = new File("/home/username/array.txt"); FileUtils fu = new FileUtils(); byte[] array = FileUtils.readFileToByteArray(file); 我想将字节数组转换为图像 ByteArrayInputStream bis = ne

我正在读取一个包含字节数组的文件。我下载了ApacheCommons IO库以使用FileUtils的readFileToByteArray方法

File file = new File("/home/username/array.txt");
FileUtils fu = new FileUtils();
byte[] array = FileUtils.readFileToByteArray(file);
我想将字节数组转换为图像

ByteArrayInputStream bis = new ByteArrayInputStream(array);
Iterator<?> readers = ImageIO.getImageReadersByFormatName("gif");

ImageReader reader = (ImageReader) readers.next();
Object source = bis;

ImageInputStream iis = ImageIO.createImageInputStream(source);

reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();

Image image = reader.read(0, param); // this line is the problem
我不知道这个异常意味着什么,因此,我不知道如何修复它。 任何可能有帮助的进一步信息都需要请求


谢谢

一旦您拥有了
字节[]
,您就可以使用它将其写入BuffereImage

BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(array));
ImageIO.write(bImageFromConvert, "gif", new File("c:/test.gif"));

该代码意味着读者无法破译图像文件上的元数据。确保正确的文件被读取并且格式正确。或者它可能需要不同的文件类型。

我在文件中尝试了您的代码,效果很好


您的
array.txt
的格式是什么
readFileToByteArray()
需要一种二进制格式,而您的图像阅读器更需要一个GIF文件。

没有字节[]我觉得这对多部分文件传输很好,为此我们需要apache通用jar文件

    final FileOutputStream output = new FileOutputStream("D:\\Dir\\"+ request.getParameter("imageName") + ".jpg");
        IOUtils.copy(request.getPart("file").getInputStream(), output);
        output.close();

如何确保文件格式正确?查看该图像文件是否可以由其他程序打开。最好是不太宽容的,或者允许你检查元数据的。事实上,我没有图像。我有一个txt文件,里面写着数据信息。正如我和其他响应者所观察到的,我们认为问题在于数据文件。您的代码片段意味着一个文本文件,而读者则期望一个二进制文件。如果您可以打开它并读取数字,那么它充其量就是一个ASCII编码的文件,需要将其转换回二进制,然后Imagereader才能使用它。否。我在Vlad的帖子上回答说,我不看数字,只看一堆问号和一些字母和数字混在一起。你是怎么知道的?也许我得到的不是byteArray。好吧,我想问题是,如果在编辑器中打开,你的文件看起来像什么。
.txt
令人担忧。如果您的文件看起来像
123 22 55 98…
,那么您需要解析这些值,例如使用a。嗯,唯一可读的字符串是
GIF89a
。其余的无论如何都是不可读的。好吧,那样的话,它应该可以用。如果将文件扩展名更改为
.gif
,并在文件浏览器中双击它,它是否正常打开?如果不是的话,你的图像文件也可能损坏。是的,我无法打开它。我会检查一下我获取bytearray的方法,然后再回到问题上来。谢谢。我尝试了你的方法,但结果是相同的例外。你可以用一行代码完成以上所有操作:
Image=ImageIO.read(file)
将消除字节数组的任何问题,并消除您对外部库的依赖。
    final FileOutputStream output = new FileOutputStream("D:\\Dir\\"+ request.getParameter("imageName") + ".jpg");
        IOUtils.copy(request.getPart("file").getInputStream(), output);
        output.close();