java代码图片合成原理 java图片合成工具类

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

之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下

创新互联是一家专业的成都网站建设公司,我们专注成都网站建设、成都做网站、网络营销、企业网站建设,友情链接广告投放为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

/**

* 图片合成视频

* @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编写时,能不能像PS一样对图片进行修图或合成呀?

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

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图形处理 能实现 剪切 魔术棒选着区域并替换为其他图片 合成图片 还有仿制图章功能吗

理论上是可以实现的,不过兄弟,你用java实现这些所用的时间,可以让你在PS上的成就达到精通级别了。


名称栏目:java代码图片合成原理 java图片合成工具类
链接URL:http://scyanting.com/article/dospijj.html