如何从保存为 jpg 文件但不知道确切类型的图像文件中获取图像格式

问题描述

我有一个如下所示的 base64 字符串

String base64string ="Suhnagsksbsgshsbsbshsushvshs.....etc;

从这里我需要找到一种图像类型,因为我也会得到 tiff 格式的图像,所以我无法在 chrome 浏览器上显示 tif 格式,所以我需要找出它是哪种格式,然后如果它是 tiff 我需要转换转成jpg然后显示在前端。

为此,

  1. 我将 base64 解码的字符串作为 jpg 文件存储在临时目录中。

  2. 我想读取文件并从中获取原始图像格式

  3. 如果是 tiff 格式,我需要将其转换为 jpg。

目前我在第二点遇到错误

找到我尝试过但无法获取图像格式的以下代码

            byte[] decoded = op.createSignature(encryptionKey,sign[1]); 
            
            
            String tempfolder = System.getProperty("java.io.tmpdir");
            System.out.println("tempfolder :"+tempfolder);
            
            String tmpfilepath = tempfolder+""+new Date().getTime()+".jpeg";
            System.out.println("tmpfilepath :"+tmpfilepath);
            File myfile = new File(tmpfilepath);        
            FileOutputStream stream = new FileOutputStream(myfile);
            stream.write(decoded);
            stream.close();     
            try {
                
                ImageInputStream iis= ImageIO.createImageInputStream(myfile);
                Iterator<ImageReader> iter = ImageIO.getimageReaders(iis);
                while(iter.hasNext()){
                    ImageReader reader = iter.next();               //throw new RuntimeException("no readers found");
                    String formatName = reader.getFormatName();
                    System.out.println("image format :"+formatName);
                }           
                iis.close();
                
            }

从这段代码中,迭代器没有从图像中找到任何数据,存储的图像大小为 12kb 并且无法手动打开,因为显示 cannot read this file 错误(我认为它不会打开)

如果我抛出异常,它会显示nosuchelementexception

我试图通过将文件路径传递给 imageinputstream 来读取示例原始图像文件我已经获得了原始文件格式,但是从 base64 字节数组无法获得相同的格式。

请建议我更改此代码中的任何内容,我不明白为什么它无法从 base64 字节数组中获取图像格式。

我使用的是 Java 1.7

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...