图片拼接java代码 java 多张图片合成pdf

Java 图片拼接图像无缩放?
这个就是个算法的问题吧,你就直接根据多少行多少列,挨个给像素点赋值啊 。不过要求原始图像大小相同吧 。
java如何将多张图片连接成一张图片Image bgImage;
Image fgImage;
try {
bgImage = ImageIO.read(bgImageFile);
fgImage = ImageIO.read(fgImageFile);
int bgWidth = bgImage.getWidth(null);
int bgHeight = bgImage.getHeight(null);
int fgWidth = fgImage.getWidth(null);
int fgHeight = fgImage.getHeight(null);
// 此类叫SpliceImages,这个方法是静态方法,所以实例化一下
// 后面的这个对象的属性是自定义的类成员 。
SpliceImages spliceImages = new SpliceImages();
// 私有方法
spliceImages.parsePosition(position, bgWidth, bgHeight, fgWidth, fgHeight);
// 生成新图片的长、宽,后面那个是色彩模式
BufferedImage bufferedImage = new BufferedImage(spliceImages.WIDTH, spliceImages.HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics graphics = bufferedImage.createGraphics();
// 绘制背景图片
graphics.drawImage(bgImage, spliceImages.bgX, spliceImages.bgY, null);
// 绘制前景图片
graphics.drawImage(fgImage, spliceImages.fgX, spliceImages.fgY, null);
graphics.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(bufferedImage);
【图片拼接java代码 java 多张图片合成pdf】output.close();
} catch (IOException e) {
e.printStackTrace();
}
这个是我做图表时写的 , 整个类中定义了很多重载方法 , 所以不全贴了 。由于用的FusionCharts3.1,单系列图表没有图例 , 为了处理导出图片,就自制图例,然后用java拼接 。其中那个私有方法是我处理两张图片的左上角坐标的 。这里就不贴了 。实际上我的做法就是取出两个图片,然后重新绘制 。做法比较笨,希望抛砖引玉吧 。同理,图片覆盖也是用这个,只是两图片的坐标发生变发 。
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; ifiles.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(rate0 ? rate : 1);
recorder.setPixelFormat(0);
recorder.start();
OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();
/**
* 合成视频
*/
for(int i = 0; ifiles.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代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于java 多张图片合成pdf、图片拼接java代码的信息别忘了在本站进行查找喔 。

    推荐阅读