java实现多张图片合成一张tif图片 RenderedImage[] imgs(多张图片), String path(保存路径)

public static void many2one(List<String> bookFilePaths, String toPath,String distFileName) {
if (bookFilePaths != null && bookFilePaths.size() > 0) {
File[] files = new File[bookFilePaths.size()];
for(int i = 0; i < bookFilePaths.size(); i++){
files[i] = new File(bookFilePaths.get(i));
}
if (files != null && files.length > 0) {

try {
ArrayList pages = new ArrayList(files.length - 1);
FileSeekableStream[] stream = new FileSeekableStream[files.length];
for (int i = 0; i < files.length; i++) {
stream[i] = new FileSeekableStream(
files[i].getCanonicalPath());
}
ParameterBlock pb = (new ParameterBlock());
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();
boolean f = makeDirs(toPath);
System.out.println(f);
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();
}
}
}
}

Ⅱ java 把背景和文字合成一张图片,其中图片长和高用户自定义。

使用BufferedImage去合成

~~~~

Ⅲ 用Java写一个能将文本、图片、音频三种格式的文件合并成同一格式例如.dat或者更好的格式的Java程序!

有个思路你可以参考
因为文件都是以二进制形式存储在计算机上,而java获取的文件流就是二进制。
你可以把二进制写在一个文本里,但要注意分割三个不同的文件,然后把这个文本定义为.dat文件。 等要读取不同的文件时,通过你的分隔符来获取对应的文建流。最后输出这个流

Ⅳ java 如何将多张JPG图片合成视频文件,比如:avi格式 或 mpg格式.

之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下
/**
* 图片合成视频
* @param mp4SavePath 视频保存路径
* @param imageDir 图片地址
* @param rate 这个可以理解成视频每秒播放图片的数量
*/
public static boolean jpgToMp4(String mp4SavePath, String imageDir, double rate) {
FFmpegFrameRecorder recorder = null;
boolean flag = true;
try {
File[] files = FileUtils.fileSort(imageDir);
int [] widthArray = new int[files.length];
int [] heightArray = new int[files.length];

/**
* 获取合成视频图片的最大宽高,避免图片比例不一致最终合成效果差
*/
for (int i = 0; i < files.length; i++) {
BufferedImage bufferedImage = ImageIO.read(files[i]);
widthArray[i] = bufferedImage.getWidth();
heightArray[i] = bufferedImage.getHeight();
}

/**
* 这个方法主要是防止图片比例达不到视频合成比例的要求,如果达不到下面条件视频则会无法播放
* 图片宽:必须要被32整除
* 图片高:必须要被2整除
*/
int [] maxWH = getImgMaxWH(widthArray,heightArray);
recorder = new FFmpegFrameRecorder(mp4SavePath,maxWH[0],maxWH[1]);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
/**
* 视频质量:目前测试出来的是25-30最清晰,视频质量范围好像是0-40,具体可以自己慢慢测
*/
recorder.setVideoQuality(25);
recorder.setFormat("mp4");
recorder.setFrameRate(rate > 0 ? rate : 1);
recorder.setPixelFormat(0);
recorder.start();

OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();

/**
* 合成视频
*/
for(int i = 0; i < files.length; i++ ){
opencv_core.IplImage image = cvLoadImage(files[i].getPath());
recorder.record(conveter.convert(image));
opencv_core.cvReleaseImage(image);
}
logger.info("合成成功");
} catch(Exception e) {
e.printStackTrace();
flag = false;
logger.error("合成失败");
} finally {
try {
if (recorder != null){
recorder.stop();
recorder.release();
}
} catch (FrameRecorder.Exception e) {
e.printStackTrace();
}
}
return flag;
}

Ⅳ java实现多个tif文件图片拼接

publicstaticvoidmany2one(List<String>bookFilePaths,StringtoPath,StringdistFileName){
if(bookFilePaths!=null&&bookFilePaths.size()>0){
File[]files=newFile[bookFilePaths.size()];
for(inti=0;i<bookFilePaths.size();i++){
files[i]=newFile(bookFilePaths.get(i));
}
if(files!=null&&files.length>0){

try{
ArrayListpages=newArrayList(files.length-1);
FileSeekableStream[]stream=newFileSeekableStream[files.length];
for(inti=0;i<files.length;i++){
stream[i]=newFileSeekableStream(
files[i].getCanonicalPath());
}
ParameterBlockpb=(newParameterBlock());
PlanarImagefirstPage=JAI.create("stream",stream[0]);
for(inti=1;i<files.length;i++){
PlanarImagepage=JAI.create("stream",stream[i]);
pages.add(page);

}
TIFFEncodeParamparam=newTIFFEncodeParam();
Filef=newFile(toPath);
if(!f.exists()){
f.mkdirs();
}
OutputStreamos=newFileOutputStream(toPath+File.separator+distFileName);
ImageEncoderenc=ImageCodec.createImageEncoder("tiff",
os,param);
param.setExtraImages(pages.iterator());
enc.encode(firstPage);
for(inti=0;i<files.length;i++){
stream[i].close();
if(files[i].isFile()&&files[i].exists()){
files[i].delete();
}
}
os.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}

Ⅵ jsp(java /html/javascript) 中有没有将两张图片合成一张图片的方法啊

Image image1 = ImageIO.read(new File(fileurl1));
Image image2 = ImageIO.read(new File(fileurl2));
int width = image.getWidth(5000);// 得到图片的长,宽
int height = image.getHeight(5000);
BufferedImage bufferedimage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);// 构造一个内存图片

bufferedimage.getGraphics().drawImage(image1, 0, 0, width, height, null); // 将本地图片画入到内存图片
bufferedimage.getGraphics().drawImage(image2, 0, 0, image1.getWidth, image1.getHeight, null);

response.setContentType("image/jpeg");// 设置返回头部
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
ImageIO.write(bufferedimage, "JPEG", response.getOutputStream()); //写到浏览器

大概方向就是这样,把图片放到内存中,然后绘制内存图片,把他们包含进去,然后把内存图片返回。
我乱改的,不能跑的。前不久刚做过
你可以试试

==========================================
几张图放一起没试过,你可以试试在绘了一张后,接着会第2张,他们的开始地点相同,看会不会被覆盖

Ⅶ Java编写时,能不能像PS一样对图片进行修图或合成呀

不可以的,但是可以先使用Ps等图片处理工具将图片美化好后,再使用java进行编写。

Ⅷ java有没有把几张图片结合在一起的那种插件

其实``我连知道你什么游戏都不知道``看好象魔兽可是太花了`都是棱角型的.`

Ⅸ java关于图片合成的问题

图片不是积木 叠在一起就是合成的
尤其是jpg格式 很复杂的 文件前面附加了很多信息
JPG的压缩原理足够写一本书

Ⅹ java如何将多张图片连接成一张图片

需要用到BufferedImage了 你查一下这方面的资料
你要的那个功能很简单···但是例子写起来很麻烦