如何解决如何从保存为 jpg 文件但不知道确切类型的图像文件中获取图像格式
我有一个如下所示的 base64 字符串
String base64string ="Suhnagsksbsgshsbsbshsushvshs.....etc;
从这里我需要找到一种图像类型,因为我也会得到 tiff 格式的图像,所以我无法在 chrome 浏览器上显示 tif 格式,所以我需要找出它是哪种格式,然后如果它是 tiff 我需要转换转成jpg然后显示在前端。
为此,
-
我将 base64 解码的字符串作为 jpg 文件存储在临时目录中。
-
我想读取文件并从中获取原始图像格式
-
如果是 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 举报,一经查实,本站将立刻删除。