zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Atitit java读取tif文件为空null的解决 图像处理

JAVA文件图像处理 解决 读取 atitit null 为空
2023-09-14 09:03:27 时间

Atitit java读取tif文件为空null的解决 图像处理

 

Jdk8.

public static byte[][] toByteArr(String filename) {

if(!new File(filename).exists())

throw new RuntimeException("file not exist:"+filename);

System.out.println(filename);

BufferedImage bimg = null;

try {

bimg = ImageIO.read(new File(filename));

} catch (IOException e) {

ExUtil.throwExV2(e);

}

 

页不跑出异常

 

找到问题了,原来图片虽然扩展名是JPG,但是实际格式是TIF,ImageIO不支持TIF。
这里顺便贴出来ImageIO可以读写的图片格式。
用:

Java code?

1

2

String[] rf = ImageIO.getReaderFormatNames();

String[] wf = ImageIO.getWriterFormatNames();


rf:jpg,rf:BMP,rf:bmp,rf:JPG,rf:jpeg,rf:wbmp,rf:png,rf:JPEG,rf:PNG,rf:WBMP,rf:GIF,rf:gif
wf:BMP,wf:bmp,wf:jpg,wf:JPG,wf:wbmp,wf:jpeg,wf:png,wf:PNG,wf:JPEG,wf:WBMP,wf:GIF,wf:gif

ImageIO应该不会因为图片太大返回NULL,就算图片太大只会抛出内存溢出的错误。
OK,结贴了。

 

 

package aa;

 

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

 

import javax.imageio.ImageIO;

import javax.media.jai.JAI;

import javax.media.jai.RenderedOp;

 

import com.sun.media.jai.codec.ImageCodec;

import com.sun.media.jai.codec.ImageEncoder;

import com.sun.media.jai.codec.JPEGEncodeParam;

 

public class TifTest {

public  String ConvertTif(String tiffile) { // 生成不重复的文件名

String jpgname = tiffile.replace(".tif", ".jpg");

String alternateName = jpgname;

int i = 0;

while (file_exists(alternateName)) {

alternateName = i + jpgname;

i++;

}

// now alternateName would be final file name to be saved. and we should

// return that

try {

RenderedOp src = JAI.create("fileload", tiffile);

OutputStream os = new FileOutputStream(alternateName);

JPEGEncodeParam param2 = new JPEGEncodeParam();

ImageEncoder enc2 = ImageCodec.createImageEncoder("JPEG", os, param2);

enc2.encode(src);

os.close();

} catch (Exception e) {

e.printStackTrace();

}

return alternateName;

}

private boolean file_exists(String alternateName) {

// TODO Auto-generated method stub

return new File(alternateName).exists();

}

public static void main(String[] args) throws IOException {

String f="D:\\0workspace\\atiplat_img\\figerprint\\images\\candidate1.tif";

String jpg=new TifTest().ConvertTif(f);

System.out.println(jpg);

BufferedImage bimg = ImageIO.read(new File(f));

System.out.println(bimg);

 

 

可能需要  jai_imageio jar。。。 也貌似jdk8包括了这个package

 

 

 }

 

}

实用Java_tif转换成jpg并缩放_kathy_新浪博客.html

 

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher  kok  虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

 

 

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

Emir Uke部落首席大酋长,

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

uke 首席cto  奶牛科技首席cto , 软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

 Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长

 

uke终身教育学校副校长   Uke医院 与医学院方面的创始人

 uec学院校长, uecip图像处理机器视觉专业系主任   uke文档检索专业系主任

 Uke 户外运动协会理事长  度假村首席大村长  uke交友协会会长

 uke出版社编辑总编

 

转载请注明来源:attilax的专栏  ?http://blog.csdn.net/attilax

--Atiend  v6