您的位置:首页 > 其它

多张图片合成一个tif文件

2018-02-04 21:09 267 查看
最近在项目对接过程中,遇到一个奇葩的需求,对方提出要求我们将每一类材料合成一个tif文件提交到ftp服务器上,感觉很无奈,就找一些工具类来做,并记录一下,以防遗忘。

我使用maven来管理jar包,下面是需要的两个jar包,很无奈的是我使用maven并不能将这两个jar包下载下来,所以自己去找了一下。

maven地址:

<!-- https://mvnrepository.com/artifact/com.github.jai-imageio/jai-imageio-core -->
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.3.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.sun.media/jai-codec -->
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai-codec</artifactId>
<version>1.1.3</version>
</dependency>


如果你可以将这两个jar包下载下来,就不用去找csdn上去找了

CSDN上该jar包的地址

public static void imgToTif(List<String> filesPath, String toPath, String distFileName) {
if (filesPath != null && filesPath.size() > 0) {
File[] files = new File[filesPath.size()];
for (int i = 0; i < filesPath.size(); i++) {
files[i] = new File(filesPath.get(i));
}
if (files.length > 0) {
try {
ArrayList<PlanarImage> pages = new ArrayList<PlanarImage>(files.length - 1);
FileSeekableStream[] stream = new FileSeekableStream[files.length];
for (int i = 0; i < files.length; i++) {
stream[i] = new FileSeekableStream(
files[i].getCanonicalPath());
}
PlanarImage firstPage = JAI.create("stream", stream[0]);
for (int i = 1; i < files.length; i++) {
PlanarImage page = JAI.create("stream", stream[i]);
pages.add(page);

}
TIFFEncodeParam param = new TIFFEncodeParam();
File f = new File(toPath);
if (!f.exists()) {
f.mkdirs();
}
OutputStream os = new FileOutputStream(toPath + File.separator + distFileName);
ImageEncoder enc = ImageCodec.createImageEncoder("tiff",
os, param);
param.setExtraImages(pages.iterator());
enc.encode(firstPage);
for (int i = 0; i < files.length; i++) {
stream[i].close();
}
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


测试代码:

public static void main(String[] args) throws Exception {
File file = new File("temp/a.jpg");
List<String> list = new ArrayList<String>();
list.add(file.getAbsolutePath());
list.add(file.getAbsolutePath());
list.add(file.getAbsolutePath());
imgToTif(list, "temp2", "a.tif");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: