当前位置:首页 » 编程语言 » java合成图片

java合成图片

发布时间: 2025-04-12 05:33:19

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生成jpg图片 并且实现文字和图片混排

response.setHeader("Cache-Control","no-cache");
String str="";
String sum="";
for(int i=0;i<4;i++){
Random random=new Random();
int j=Math.round(random.nextFloat()*35);
char x=str.charAt(j);
sum+=x+"";
}
request.getSession().setAttribute("Code",sum);
BufferedImage bufferedImage=new BufferedImage(50,20,BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics2D=(Graphics2D)bufferedImage.getGraphics();
graphics2D.setColor(Color.blue);
graphics2D.fill3DRect(0,0,50,20,false);
graphics2D.setColor(Color.YELLOW);
graphics2D.drawString(sum,10,12);
response.setContentType("image/jpeg");
ServletOutputStream output;
try {
output = response.getOutputStream();
JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(output);
encoder.encode(bufferedImage);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

⑶ java生成图片(java生成图片并添加文字)

java怎么生成带用户微信头像的图片,并把这张图片发送给用户。

准确的说,应该是文件上传如何实现。文件上传,一般都是能过组件来实现,自己来写上传的话,不太方便,也没必要,别人都做的太多了。

1,进入微信界面,选择“我”。2,点击“头像”。3,接着点击“我的二维码”。4,其次点击右上角的“三个点”。5,然后点击“换个样式”。

首先我们需要打开手机微信,在“发现”页我们找到小程序入口,搜索头像小助手这个小程序。搜索并进入头像小助手后,在手机显示的页面上我们找到并进入“头像加字”这个选项。一眼难忘的微信头像。

用软件在图片上添加上你的姓氏,调整好字体、大小、颜色,保存到桌面或发到手机上,再打开微信点击更换头像(把刚才制作的姓氏头像上传即可。不明白给要做的姓氏和邮箱追问。男人走运发财微信头像。

关注微信官方公众号“公众平台安全助手”。点击主菜单的“群发”,选择新建群发。登录要群发的账号,上传要群发的图片,确认图片无误后,点击群发。

打开【微信】,在【搜索框】搜索【姓氏图】,进入【姓氏图】小程序,输入你和你对象的姓氏,点击【开始制作】,最后将制作好的图片保存替换原有的头像即可。

如何利用Java生成JPG缩略图

1、把图片等比例缩放,然后以二进制的形式存到数据库中。

2、把图片按照规定的比例压缩,然后保存至FTP,列表读取缩略图,单击显示原图。

3、学JAVA就到广州疯狂JAVA来学习李刚授课我是不能。。

4、用photoshop打开,另存为jpg格式就可以了。注意很多tif图片都是cmyk四色的(印刷格式),如果想把图片应用于网络上,要转换成rgb三色的。方法就是打开后,点击图像—〉模式—〉rgb颜色。

5、我刚刚找到一点点思路,希望对你有帮助。你把电脑的系统隐藏文件都改成可见的,如果你在有图片的文件夹打开,会发现里面有一个文件叫thumb.db这个文件。这个应该是一个数据库文件,存放的是图片文件夹里面图片的缩略图。

6、你好。如果要把别人的图片水印变成自己的,那么首先就是用PS软件P除掉该图片上的水印,然后将P过的图片加入微信公众平台素材库里。

java自定义字体文字和图片生成新图片(高分)

这个技术好实现,思想如下:用js控制;再根据文字与形式生成图片;再输出即可。我以前做过。

Java的话最好用图片,位图类也可以。但是直接读取图片的效率比较高,画起来也方便,用位图类很难做出好的效果,做起来改起来都十分麻烦。如果用到OpenGL还可以用动态构造纹理的方法,但是资源占用会比较多。

+表格,图形的只读文档是很有用的。它的类库尤其与javaServlet有很好的给合。+使用iText与PDF能够使你正确的控制Servlet的输出。

使用JLabel加载图片效果使用JLabel时,由于未图片尺寸与窗体尺寸不一致,导致图片只显示出一部分;且有一个控件被遮挡了。注意:通过精细设置尺寸和添加控件顺序,可以达到较为满意的效果的。

你也可以自己继承JPanel类,然后把图片、大小作为参数传递,然后构造这样的JPanel。然后把你放在frame上的东西都放在这个JPanel上。

⑷ 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();
}
}
}
}

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:621
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:350
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:65
php微信接口教程 发布:2025-04-16 17:07:30 浏览:290
android实现阴影 发布:2025-04-16 16:50:08 浏览:785
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:335
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:199
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:794
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:352
土压缩的本质 发布:2025-04-16 16:13:21 浏览:580