- 浏览: 162037 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (82)
- Java (13)
- JFreeChart (1)
- Velocity (1)
- Mysql (4)
- JavaScript (12)
- linux (2)
- Spring (1)
- Log4j (1)
- JProfiler (1)
- Ajax (2)
- Jsp (3)
- API (1)
- version (2)
- SystemTool (3)
- apache Tomcat (12)
- Html (2)
- Ehcache (2)
- oracle (4)
- MyEclipse (1)
- Windows (4)
- JQuery (1)
- LoadRunner (6)
- WebSphere (1)
- InstallAnywhere (1)
- 分布式session (1)
最新评论
-
u010879318:
out.write("abcdefw".g ...
基于SMB协议的共享文件读写 -
vanezkw:
demo很清晰明了
基于SMB协议的共享文件读写 -
LyAn_爱踢爱死:
如果我的用户是 abc 但是我没有密码怎么办?
基于SMB协议的共享文件读写 -
Dxx23:
oracle的rownum只支持<=,不支持>=, ...
mysql查询前几条记录 -
Dxx23:
不错的总结,学习了!
mysql查询前几条记录
Class1
Class2 createJpg
模板
合成后的图片
package com.company.erp.exam.gw_certificate.action; /*------------------------------------------------------------------------------------------------------------------*/ /* 版本ID 日期 姓名 改版内容 /*------------------------------------------------------------------------------------------------------------------*/ import java.awt.Color; import java.awt.Font; import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import com.company.erp.common.gw_certificate.databean.Gw_certificateDO; import com.company.erp.common.gw_certificate.form.Gw_certificateForm; import com.company.erp.common.gw_certtemp.databean.Gw_certtempDO; import com.company.erp.common.purview_organization.databean.Purview_organizationDO; import com.company.erp.common.purview_user.databean.Purview_userDO; import com.company.erp.common.system_basicdata.databean.System_basicdataDO; import com.company.erp.exam.gw_certificate.databean.Gw_certificateViewDO; import com.company.erp.exam.gw_certificate.si.Gw_certificateSI; import com.company.erp.system.bo.System_urlBO; import com.company.util.Common; import com.company.util.ObjectEvaluate; import com.gsf.arch.BaseAction; import com.gsf.tool.calendar.DateUtil; import com.gsf.tool.constant.Custom; import com.gsf.tool.exception.BaseException; import com.gsf.tool.image.dto.LetterDTO; import com.gsf.tool.image.util.CreateImage; /** * * 查看 证书 */ public class Gw_certificateSI_retrieve_selectAction extends BaseAction { public void myLogic(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response,HashMap beanMap) throws BaseException { Gw_certificateForm curForm=(Gw_certificateForm)form; Gw_certificateDO curDO = (Gw_certificateDO)curForm.getDO(); //通过spring的配置文件来调用,这样的好处是利用了spring的事务管理 Gw_certificateSI si = new Gw_certificateSI(); curDO=(Gw_certificateDO)si._retrieve(curDO); //将BaseDO对象数组转换为ActionForm数组 String cacheName = "Certtemp"; String className = Gw_certtempDO.class.getName(); Long certtemp_id = curDO.getCerttemp_id(); Gw_certtempDO gw_certtempDO = null ; //user的id Long user_id = curDO.getUser_id(); //获取考证时间 作为 发证时间 ; Date examTime = curDO.getExamTime(); Date expiredDate = curDO.getExpiredDate(); Purview_userDO purview_userDO = null; //从cache中获得用户的信息 if(user_id != null){ purview_userDO = (Purview_userDO)Common.parseDBCache_Row("PURVIEW_USER", user_id.toString(),Purview_userDO.class.getName()); } Long certificatePictureAddrURL = null; String newJPGFileName = null ; if( certtemp_id != null ){ gw_certtempDO = (Gw_certtempDO)Common.parseDBCache_Row(cacheName, certtemp_id.toString(), className); } if( gw_certtempDO != null ){ certificatePictureAddrURL = gw_certtempDO.getCertificatePictureAddrURL(); String backImageFileName = ""; if(certificatePictureAddrURL != null) backImageFileName = System_urlBO.getPath(certificatePictureAddrURL); //还要增加用户的基本信息 ArrayList letterDTO_list = getLetters(gw_certtempDO,purview_userDO,examTime, expiredDate); ArrayList imageDTO_list= new ArrayList(); CreateImage createImage = new CreateImage(); String tempJPGFileName=Common.getFileMainNameByUserSession(request) + ".jpg"; newJPGFileName=tempJPGFileName; Date currentDBDate=Common.getDBCurrentDate_Memory(); String currentDBDate_str=DateUtil.format(currentDBDate,"yyyyMMdd"); String tempItemName="tempCertificate"; String physicalPath = Common.getParaCacheItemValue(tempItemName); physicalPath=Common.getFilePath(physicalPath,Custom.fileSeparator,currentDBDate_str); newJPGFileName=physicalPath+newJPGFileName; if(!new File(physicalPath).isDirectory()) { new File(physicalPath).mkdirs(); } if(!backImageFileName.equals("")) createImage.createJpg(backImageFileName, imageDTO_list, letterDTO_list,newJPGFileName); newJPGFileName=tempJPGFileName; String virtualPath = Common.getParaCacheItemWeburl(tempItemName); virtualPath=Common.getFilePath(virtualPath,"/",currentDBDate_str); newJPGFileName=virtualPath+newJPGFileName; } // 判断领取没 request.setAttribute("fileName" ,newJPGFileName); } public ArrayList getLetters( Gw_certtempDO gw_certtempDO , Purview_userDO purview_userDO ,Date examTime, Date expiredDate){ ArrayList letterDTO_list = new ArrayList(); Calendar calendar =Calendar.getInstance(); calendar.setTime(examTime); String year = calendar.get(Calendar.YEAR)+""; String month = calendar.get(Calendar.MONTH)+1+""; String day = calendar.get(Calendar.DAY_OF_MONTH)+""; Calendar calendar1 =Calendar.getInstance(); calendar1.setTime(expiredDate); String yeare = calendar1.get(Calendar.YEAR)+""; String monthe = calendar1.get(Calendar.MONTH)+1+""; String daye = calendar1.get(Calendar.DAY_OF_MONTH)+""; // 证书模板的名称 String certtempName = gw_certtempDO.getCerttempName(); String certtempNameXY = gw_certtempDO.getCerttempNameXY(); LetterDTO letterCerttempNameDTO = getLetter(certtempName,certtempNameXY,"黑体","40","#000000"); letterDTO_list.add(letterCerttempNameDTO); // 签发单位 String signname = gw_certtempDO.getCertificateSignname(); String signnameXY = gw_certtempDO.getCertificateSignnameXY(); LetterDTO letterSignNameDTO = getLetter(signname,signnameXY,"宋体","20","#000000"); letterDTO_list.add(letterSignNameDTO); // 姓名 String userName = null; String identityCard = null; Long specialtyCode = null; Long positionCode = null; Long gradeCode = null; Long userOrg_id = null ; String userOrgName = null ; String db_cacheSpecialityName = "Speciality"; String db_cachePostName = "Post"; String db_cacheGradeName = "Grade"; String db_cacheOrganizationName = "organization"; //专业岗位等级的名称 String certificateType = ""; if(purview_userDO!= null ){ userName = purview_userDO.getLastNameFirs(); identityCard = purview_userDO.getIdentityCard(); userOrg_id = purview_userDO.getOrganization_id(); //根据证书模板上的专业、岗位、等级 specialtyCode = gw_certtempDO.getSpecialtyCode(); positionCode = gw_certtempDO.getPositionCode(); gradeCode = gw_certtempDO.getGradeCode(); if( userOrg_id != null ){ Purview_organizationDO purview_organizationDO = (Purview_organizationDO)Common.parseDBCache_Row(db_cacheOrganizationName, userOrg_id.toString(),Purview_organizationDO.class.getName()); if( purview_organizationDO != null ){ userOrgName = purview_organizationDO.getOrganizationName(); } } if(specialtyCode != null){ System_basicdataDO system_basicdataSpDO = (System_basicdataDO)Common.parseDBCache_Row(db_cacheSpecialityName, specialtyCode.toString(),System_basicdataDO.class.getName()); if(system_basicdataSpDO!=null){ certificateType += system_basicdataSpDO.getOptionsName(); } } if(gradeCode != null){ System_basicdataDO system_basicdataGradeDO = (System_basicdataDO)Common.parseDBCache_Row(db_cacheGradeName, gradeCode.toString(), System_basicdataDO.class.getName()); if(system_basicdataGradeDO != null){ certificateType += system_basicdataGradeDO.getOptionsName(); } } } // 单位名称 String userOrgNameXY = gw_certtempDO.getUserOrgXY(); LetterDTO userOrgNameDTO = getLetter(userOrgName,userOrgNameXY,"宋体","20","#000000"); letterDTO_list.add(userOrgNameDTO); // 有效期 String ExpiresXY = gw_certtempDO.getExpiresXY(); LetterDTO ExpiresDTO = getLetter("有效期至"+yeare+"年"+monthe+"月"+daye+"日",ExpiresXY,"宋体","20","#000000"); // LetterDTO ExpiresDTO = getLetter("截止日期:"+DateUtil.format(expiredDate, DateUtil.dateFormatYYYYMMDD),ExpiresXY,"宋体","20","#000000"); letterDTO_list.add(ExpiresDTO); // 年 String yearXY = gw_certtempDO.getYearXY(); LetterDTO yearXYDTO = getLetter(year,yearXY,"宋体","20","#000000"); letterDTO_list.add(yearXYDTO); // 月 String monthXY = gw_certtempDO.getMonthXY(); LetterDTO monthXYDTO = getLetter(month,monthXY,"宋体","20","#000000"); letterDTO_list.add(monthXYDTO); // 日 String dayXY = gw_certtempDO.getDayXY(); LetterDTO dayXYDTO = getLetter(day,dayXY,"宋体","20","#000000"); letterDTO_list.add(dayXYDTO); // 姓名 String userNameXY = gw_certtempDO.getUserNameXY(); LetterDTO userNameDTO = getLetter(userName,userNameXY,"宋体","20","#000000"); letterDTO_list.add(userNameDTO); // 身份证 String identityCardXY = gw_certtempDO.getIdentityCardXY(); LetterDTO identityCardDTO = getLetter(identityCard,identityCardXY,"宋体","20","#000000"); letterDTO_list.add(identityCardDTO); //专业岗位等级certificateTypeXY String certificateTypeXY = gw_certtempDO.getCertificateTypeXY(); LetterDTO certificateTypeDTO = getLetter(certificateType,certificateTypeXY,"宋体","20","#000000"); letterDTO_list.add(certificateTypeDTO); return letterDTO_list; } // 字体的名称 ,xy 坐标 , 字体类型 ,字体大小, 字体的颜色 public LetterDTO getLetter ( String name ,String xy ,String style ,String size ,String fontColor ){ LetterDTO letterDTO = new LetterDTO(); letterDTO.setLetter(name); Integer x = 0; Integer y = 0; if(xy != null){ xy.replace(',', ','); String[] str = xy.split(","); if(str.length > 1){ x = Integer.parseInt(str[0]); y = Integer.parseInt(str[1]); } else{ x = Integer.parseInt(str[0]); y = 0; } } letterDTO.setX(x); letterDTO.setY(y); Font font = Font.decode(style); font=font.deriveFont(Float.parseFloat(size));//font.deriveFont(float f)复制当前 Font 对象并应用新设置字体的大小 letterDTO.setFont(font); Color color=Color.decode(fontColor); letterDTO.setColor(color); return letterDTO ; } }
Class2 createJpg
package com.gsf.tool.image.util; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import javax.imageio.ImageIO; import com.company.erp.common.gw_certtemp.databean.Gw_certtempDO; import com.company.erp.system.bo.System_urlBO; import com.gsf.tool.image.dto.ImageDTO; import com.gsf.tool.image.dto.LetterDTO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class CreateImage { /** * 根据提供的文字生成jpg图片 * * @param backJpgPath * String 背景图片路径 * @param imageDTO_list * 小图片dto(第个元素都是LetterDTO) list * @param letterDTO_list * 文字dto(第个元素都是ImageDTO_list) list * @param newJPGFileName * String 生成的新JPG图片名称 */ public boolean createJpg(String backImageFileName,ArrayList imageDTO_list, ArrayList letterDTO_list, String newJPGFileName) { boolean ret=false; try { // 宽度 高度 File backJpg_file = new File("E:\\companyERP_data\\resource\\url\\certificatePicture\\jpg\\certtemp\\zhengshu.jpg"); BufferedImage back_bufferdImage = ImageIO.read(backJpg_file); Graphics2D graphics2D = back_bufferdImage.createGraphics(); graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); //去除锯齿(当设置的字体过大的时候,会出现锯齿) if (letterDTO_list!=null) { for(int i=0;i<letterDTO_list.size();i++) { LetterDTO letterDTO=(LetterDTO) letterDTO_list.get(i); if ( (letterDTO!=null) && (letterDTO.getColor()!=null) && (letterDTO.getFont()!=null) ) graphics2D.setColor(letterDTO.getColor()); // 字的颜色 Font letter_Font=letterDTO.getFont(); graphics2D.setFont(letter_Font); FontMetrics letter_FontMetrics=graphics2D.getFontMetrics(letter_Font); int letter_Ascent=letter_FontMetrics.getAscent(); int letter_leading=letter_FontMetrics.getLeading(); graphics2D.drawString(letterDTO.getLetter(), letterDTO.getX(),letterDTO.getY()+letter_Ascent-letter_leading); //在指定坐标除添加文字 } } graphics2D.dispose();// 释放资源 if (imageDTO_list!=null) { for(int i=0;i<imageDTO_list.size();i++) { ImageDTO imageDTO=(ImageDTO) imageDTO_list.get(i); if ((imageDTO!=null) && imageDTO.getImageFileName()!=null) { File smallImage_file = new File(imageDTO.getImageFileName()); BufferedImage smallImage_bufferedImage = ImageIO.read(smallImage_file); int width = smallImage_bufferedImage.getWidth(); // 图片宽度 int height = smallImage_bufferedImage.getHeight(); // 图片高度 // 从图片中读取RGB int[] imageArray = new int[width * height]; imageArray = smallImage_bufferedImage.getRGB(0, 0, width, height,imageArray, 0, width); back_bufferdImage.setRGB(imageDTO.getX(), imageDTO.getY(), width, height,imageArray, 0, width); } } } FileOutputStream out = new FileOutputStream(newJPGFileName); // 指定输出文件 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(back_bufferdImage); param.setQuality(50f, true); encoder.encode(back_bufferdImage, param); // 存盘 out.flush(); out.close(); ret=true; } catch (Exception e) { System.out.println("createJpgByFont Failed!"); e.printStackTrace(); } return ret; } public static void main(String[] args) { ArrayList letterDTO_list=new ArrayList(); LetterDTO letterDTO=new LetterDTO(); letterDTO.setLetter("哈哈,终于可以合成图片了"); letterDTO.setX(70); letterDTO.setY(63); Font font = Font.decode("宋体"); font=font.deriveFont(Float.parseFloat("12"));//font.deriveFont(float f)复制当前 Font 对象并应用新设置字体的大小 letterDTO.setFont(font); Color color=Color.decode("#FF0000"); letterDTO.setColor(color); letterDTO_list.add(letterDTO); ArrayList imageDTO_list=new ArrayList(); ImageDTO imageDTO=new ImageDTO(); imageDTO.setImageFileName("C:\\jpg\\BlackUser.jpg"); imageDTO.setX(383); imageDTO.setY(22); imageDTO_list.add(imageDTO); CreateImage createImage = new CreateImage(); String backImageFileName = "C:\\jpg\\a.jpg"; String newJPGFileName="C:\\jpg\\a1.jpg"; createImage.createJpg(backImageFileName, imageDTO_list, letterDTO_list,newJPGFileName); } }
模板
合成后的图片
发表评论
-
java类实现导出各种数据库insert语句
2014-11-17 16:16 1960import java.io.BufferedWriter; ... -
java去除字符串中的空格、回车、换行符、制表符
2014-09-28 21:59 857import java.util.regex.Matcher; ... -
HttpSessionListener和HttpSessionBindingListener的区别
2012-03-12 15:16 8651. 使用HttpSessionListener ... -
JSP中request.getParameter()乱码问题
2011-11-15 16:50 900如果是post的话,可以通过设置filter的方法来解决。 如 ... -
java 获取网卡MAC地址
2011-11-09 11:12 1083package sterning.queue; import ... -
基于SMB协议的共享文件读写
2011-10-25 17:28 23381一、SMB协议 SMB协议是基于TCP-NETBIOS下的,一 ... -
<context-param>与<init-param>的区别与作用
2011-07-05 10:18 805<context-param>的作用: ... -
读取配置文件java.util.Properties
2011-01-14 14:50 1242package com.company.erp.util; ... -
通过jcifs实现java访问网络共享文件
2010-08-03 12:28 2024通过jcifs实现java访问网络共享文件 jcifs 是 c ... -
更改main方法的内存
2010-07-30 17:01 928更改main方法的内存 -
java读取纯真IP数据库QQwry.dat的源代码
2010-07-21 17:01 1015http://blog.csdn.net/swazn_yj/a ... -
在tomcat5.0以上版本中修改java代码而不用重启服务器
2010-07-21 11:13 1495如果server.xml中配置如下,则需要重启 <Co ...
相关推荐
Java合成图片
然后,我们可以创建一个方法来合成图片。假设我们要将多张图片水平排列在一张新图片上,我们可以这样做: ```java public static BufferedImage composeImages(BufferedImage[] images, int spacing) { int width ...
本篇文章将深入探讨如何使用Java实现“多张图片合成”、“图片拼接”以及“图片上写字”的功能。我们将主要围绕提供的`ImgUtil.java`文件进行讲解。 1. **图片合成**: 图片合成是指将多张图片组合成一张新的图片...
java实现图片合成的合成。可以使两张或多张图片合成起来,并且不失真
本项目的核心目标是通过JavaCV将指定目录下的JPG图片序列合成成一个视频文件。 首先,我们需要了解JavaCV的基本用法。JavaCV提供了一个Java接口,可以直接调用OpenCV和FFmpeg的函数。在Android中,我们通常需要添加...
在Java编程环境中,将一系列图片合并成视频是一个常见的多媒体处理任务。这个项目文件提供了一种实现方式,让我们来深入探讨一下这个过程中的关键知识点。 首先,我们要了解的是Java中的多媒体处理库。在这个项目中...
总的来说,Java合成GIF涉及到了图像处理、编码算法和文件格式理解等多个层次的技术,这需要开发者对Java的IO操作、图像处理库和数据压缩有深入的理解。通过这些知识,开发者可以创建出自定义的动态GIF,满足各种应用...
Java将多张图片合成为一张,类似于PhotoShop中的合成图片,将两张图片合成输出为一张JPG,两幅图像叠加在一起,这是个比较基础的Java图像合成的例子。在JAVA中实现图片合成,本例的实现核心代码如下: InputStream...
通过java实现对图片的进行合成处理,合成过程可制定位置,主要场景例如生成工作证或者胸牌
选择图片,拼接图片,Java拼接多张图片,连接在一起 代码程序。
在Java编程环境中,实现视频、音频和图片的合成功能是一项技术挑战,涉及到多媒体处理、图像操作和文件I/O等多个领域。本项目提供了一个完整的解决方案,包括安装文件和详细的Java源代码,允许开发者进行二次开发和...
在本教程中,可能有代码演示如何在生成的二维码或合成图片上添加文字,如添加标题或描述。 6. **代码示例**: `ZxingUtils.java`文件很可能包含了上述操作的实现。例如,可能有一个名为`generateQRCode`的方法,...
java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频 通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令
在Java编程语言中,将两张图片合成在一起是一个常见的图像处理任务。这个过程涉及到对图像文件的读取、处理以及合并,通常使用Java的内置库如`java.io`和`javax.imageio`。在这个场景中,`FileInputStream`用于读取...
根据给定文件的信息,本文将围绕Java操作图片的方法展开,主要涵盖往图片上添加文字以及合并多张图片的功能。这些技术在制作许可证书、安全证书等应用场景中非常实用。 ### Java操作图片概述 #### 一、加载图片 在...
在Java编程环境中,将图片列表合并转换为PDF文档是一项常见的任务,特别是在报告生成、文档整理或数据可视化等场景。这个示例将详细讲解如何通过Java实现这一功能,包括必要的库引用、代码实现以及可能遇到的问题。 ...
总结,将大量图片合成到一个PDF文件,使用Java和PDFBox库是一个高效且灵活的方法。通过理解这些基本操作,你可以根据具体需求进行定制,创建出满足各种场景的PDF文档。在处理大批量图片时,可能还需要考虑性能优化,...
这是一个关键的图像处理技术,因为可以创建复杂的视觉效果或者进行图像合成。 首先,我们需要引入Java的`javax.imageio`和`java.awt`库,这两个库提供了处理图像所需的功能。`javax.imageio`用于读取和写入图像,而...
在Java编程环境中,将多张JPEG格式的图片转换为动态GIF格式是一项常见的图像处理任务。这个Demo展示了如何使用Java的图像处理库来完成这一过程。以下是对这个过程的详细解释: 首先,我们需要一个能够处理GIF格式的...
java结合imageMagick实现图片渲染合成编辑,源码附送安装文件学习文档。