package com.image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.media.jai.NullOpImage;
import javax.media.jai.OpImage;
import javax.media.jai.PlanarImage;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.TIFFEncodeParam;
public class MergeMultTif {
public static void main(String[] args) {
String inputDir = "E:\\DIPS\\testdata\\splitImg";
File faxSource = new File(inputDir);
File file[] = faxSource.listFiles();
System.out.println("files are " + Arrays.toString(file));
int numImages = file.length;
List<BufferedImage> images = new ArrayList<BufferedImage>();
try
{
for (int i = 0; i < numImages; i++)
{
SeekableStream ss = new FileSeekableStream(file[i]);
ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", ss, null);
int numPages = decoder.getNumPages();
for(int j = 0; j < numPages; j++)
{
PlanarImage op = new NullOpImage(decoder.decodeAsRenderedImage(j), null, null, OpImage.OP_IO_BOUND);
images.add(op.getAsBufferedImage());
}
}
TIFFEncodeParam params = new TIFFEncodeParam();
OutputStream out = new FileOutputStream(inputDir + "\\combined.tif");
ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out, params);
List<BufferedImage> imageList = new ArrayList<BufferedImage>();
for (int i = 1; i < images.size(); i++)
{
imageList.add(images.get(i));
}
params.setExtraImages(imageList.iterator());
encoder.encode(images.get(0));
out.close();
}catch (Exception e){
System.out.println("Exception " + e);
}
}
}
添加jar包:jai_codec.jar,jai_core.jar
分享到:
相关推荐
where a single base must communicate with many users simultaneously. As a result, the study of multi-user MIMO systems has emerged recently as an important research topic. Such systems have the ...
最优传输论文(五十一):Learning to Combine Knowledge Aggregation for Multi-Source Domain Adaptation论文原理_CtrlZ1的博客-CSDN博客.mht
在`Multi-DOC-Combine-main`这个压缩包文件中,很可能包含了实现这个功能的完整代码和示例文件。解压后,你可以查看源代码了解具体实现细节,并根据自己的需求进行调整。如果遇到问题,可以通过查阅`python-docx`库...
《Combine Asynchronous Programming in Swift 2nd》是针对Swift编程语言的第二版,专注于iOS、macOS和iPhone应用开发中的后台异步编程技术。这本书详细介绍了如何利用Swift的 Combine 框架进行高效的并发和事件处理...
grunt-combine-media-queries, [DEPRECATED] 在这里管理新版本 组合媒体查询将匹配的媒体查询合并到一个媒体查询定义中。 使用嵌套媒体查询对preprocessors生成的CSS有用。这是为我们的移动第一站点使用 LESS CSS...
在IT行业中,游戏开发是一个非常广泛的领域,而“Combine-Squad-Control: 控制一个联合小队并生存”可能是一款战术策略或角色扮演游戏的核心机制。在这个游戏中,玩家需要管理并指挥一个团队,确保他们在游戏世界中...
laravel-elixir-combine-media-queries安装$ npm install laravel-elixir-combine-media-queries --save-dev例子 var elixir = require ( 'laravel-elixir' ) ;require ( 'laravel-elixir-combine-media-queries' ) ...
《顽固文件删除工具Unlocker 1.9.0详解》 在日常的电脑操作中,我们时常会遇到一些无法正常删除的文件,这些文件可能是正在被其他程序占用,或者是由于系统权限问题导致的。此时,普通的删除操作往往无济于事,而...
When mapping from an ER model to a relational model, a strong entity is mapped into a (a) table (b) row (c) column (d) key Correct answer is (a) 10. Which of the following is true about ...
npm install --save-dev postcss postcss-combine-duplicated-selectors# oryarn add --dev postcss postcss-combine-duplicated-selectors使用PostCSS JS API 'use strict' ;const fs = require ( 'fs' ) ;const ...
Mesh Combine Studio是一款基于细胞的自动网格合成器,可显着提高游戏性能。它可以用于任何平台的任何类型的游戏。 我们在游戏D.R.O.N.E中使用MCS技术。对于我们的模块化竞技场编辑器,没有它,我们只会得到1帧/秒...
本项目"combine-login-form"显然旨在演示如何在登录表单中结合使用这两个框架。 首先,让我们深入了解 Combine 框架。Combine引入了发布者(Publisher)、订阅者(Subscriber)和运营商(Operators)的概念,它们构成了...
组合相同的键 将共享同一密钥的所有属性组合到单个对象中安装npm i combine-same-keys用法import combineSameKeys from 'combine-same-keys'combineSameKeys ( { foo : { color : 'red' } , bar : { fontSize : 16 }...
Compressed archives combine multiple files into a single file to make them easier to transport or save on diskspace. Archiving software may also provide options for encryption, file spanning, check...
"Combine URL Extensions-crx插件"是一款专为浏览器设计的扩展程序,主要功能是整合URL地址的各个组成部分,使得用户可以更加便捷地访问完整的网页URL。这款插件尤其适合那些经常处理复杂或冗长网址的用户,它简化了...
Python-Combine-WeChat-and-AliPay-Billing-Details This is a blog with usefull tools for merging WeChat and Ali Pay billing details. which is mainly for Chinese users, that is why it written in Chinese....
WorldComposer is a tool to extract heightmap data and satellite images from the real world. It can run as a standalone or as an extension for TerrainComposer. Its powerful features let you create ...
- (a) function or command keys which combine an entire command into a single keypress: 功能键或命令键可以将整个命令组合成一个按键动作,这是典型的加速器形式。 - (b) scrolling by using the keyboard ...
**前端开源库——Istanbul Combine:打造全面的代码覆盖率报告** 在前端开发中,测试覆盖率是衡量代码质量的重要指标之一。Istanbul 是一个流行的 JavaScript 测试覆盖率工具,它能够为你的代码提供详尽的覆盖信息...
2. **创建项目结构**:在你的工作目录下,创建一个新的文件夹,例如命名为 "COMBINE-JSON-TO-CSV",并将 "COMBINE-JSON-TO-CSV-master" 压缩包解压到这个文件夹内。这个文件夹应该包含脚本文件和待处理的 JSON 文件...