宝哥软件园

java实现图片上加文字水印(SpringMVC Jsp)

编辑:宝哥软件园 来源:互联网 时间:2021-10-31

看之前要先对学习笔记一进行了解打好基础,下面直接先看效果图

代码编写

1.导入相关架包

2.配置文件

web.xml

?可扩展标记语言版本='1.0 '编码='UTF-8 '?web-app xmlns : xsi=' http://www。w3。org/2001/XMLSchema-instance ' xmlns=' http://xmlns。JCP。org/XML/ns/javaee ' xsi 3360架构位置=' http://xmlns。JCP。org/XML/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd' ID=' WebApp _ ID '版本=' 3.1 '显示名称watermarkspringmvc/显示名称servlet servlet

?可扩展标记语言版本='1.0 '编码='UTF-8 '?beans xmlns=' http://www。弹簧框架。org/schema/beans ' xmlns : xsi=' http://www .w3。org/2001/XMLSchema-instance ' xmlns : context=' http://www .弹簧框架。org/schema/context ' xmlns 3: mcvc=' http://www .弹簧框架。org/schema/MVC ' xsi : schema location=' 333http://www .JSP '/property属性名称=' viewclash '值=' org。弹簧框架。网络。servlet。查看。jst view//property/bean id=' multipart resolver ' class=' org。弹簧框架。网络。多部分的。公地。commonsmultipartresolver”属性名称=“defaultEncoding”值=“UTF-8”/属性属性名称=“maxUploadSize”值=“10485760000”/属性属性名称=“maximemmorysize”值=“40960”/编写行为

沃特马克行动.行为

包裹。com。温特延。watermarkspringmvc导入javax。servlet。http。HttpSession导入组织。弹簧框架。豆子。工厂。注释。自动连线;导入组织。弹簧框架。刻板印象。控制器;导入组织。弹簧框架。网络。绑定。注释。请求映射;导入组织。弹簧框架。网络。绑定。注释。请求方法;导入组织。弹簧框架。网络。绑定。注释。请求参数;导入组织。弹簧框架。网络。多部分的。公地。commonsmultipart文件;导入组织。弹簧框架。网络。servlet。modelAnDview进口。com。温特延。ServiCe。MarkServiCe进口。com。温特延。服务。uploadservice@Controllerpublic类WatermarkAction { private MarkServiCe Mack服务;私有上传服务上传服务;@RequestMapping(值='/水印',方法=RequestMethod .开机自检)公共模型和视图水印(@ request param(' image ')CommonsMultipartFile)文件,HttpSession会话)引发异常{ String uploadPath='/images ';字符串realUploadPath=会话。getservletcontext().getRealPath(uploadPath);string imageUrl=uploadservice。上传图像(文件、上传路径、真实上传路径);string logoImageUrl=MackServiCe。水印(文件,上传路径,真实上传路径);modelAnDview ret=new modelAnDview();ret.addObject('imageUrl ',imageURl);ret.addObject('logoImageUrl ',LoGoimageURl);ret.setViewName('水印');返回ret } @ Autowired public void setmack service(MarkServiCe MackServiCe){ this。MackServiCe=MackServiCe} @ Autowired public void setUploadService(UploadService UploadService){ this。UploadService=UploadService}}4.编写服务类

MarkService .爪哇岛

包裹。com。温特延。服务;导入Java。啊。颜色;导入Java。啊。字体;导入Java。io。文件;导入组织。弹簧框架。网络。多部分的。公地。commonsmultipart文件;公共接口MarkServiCe { public static final String MARK _ TExT=' wenter Yan ';公共静态最终字符串' FONT_NAME='微软雅黑;公共静态最终int FONT _ SiZe=120公共静态最终int FONT_STYPE=Font .大胆的公共静态最终颜色FONT_COLOR=颜色。红色;公共静态最终int X=10公共静态最终int Y=10公共静态浮动ALPHA=0.3F公共字符串水印(CommonsMultipartFile文件,字符串上传路径,字符串真实上传路径);}5.编写接口实现类

上传服务.爪哇岛

包裹。com。温特延。服务。impl导入Java。io。文件输出流;导入Java。io。ioexception导入Java。io。InputStream导入Java。io。OutputStreamimport org.springframework。刻板印象。服务;导入组织。弹簧框架。网络。多部分的。公地。commonsmultipart文件;@Servicepublic类上传服务{公共字符串上传图像(公共多部分文件文件,字符串上传路径,字符串真实上传路径){输入流为=NullOutputStream OS=null try { is=file。getinputstream();OS=新文件输出流(realUploadPath '/'文件。getoriginalfilename());字节[]缓冲区=新字节[1024];int len=0;而((len=is。读取(缓冲区))0){ OS。写(缓冲区);} } catch(异常e){ e . print stack trace();}最后{ if(is!=null){ try { is。close();} catch (IOException e) { //TODO自动生成的捕捉块e . print stack trace();} } if(os!=null){尝试{ OS。close();} catch (IOException e) { //TODO自动生成的捕捉块e . print stack trace();} } }返回上传路径"/"文件。getoriginalfilename();}}MarkServiceImpl .爪哇岛

包裹。com。温特延。服务。impl导入Java。啊。AlphaComposite导入Java。啊。字体;导入Java。啊。图形2d;导入Java。啊。图像;导入Java。啊。图像。bufferedimage导入Java。io。文件;导入Java。io。文件输出流;导入Java。io。ioexception导入Java。io。InputStream导入Java。io。OutputStream导入javax。imageio。imageioimport org.springframework。刻板印象。服务;导入组织。弹簧框架。网络。多部分的。公地。commonsmultipart文件;导入com。星期日图像。编解码器。JPEG。jpegcodec导入com。星期日图像。编解码器。JPEG。jpegimageencoder进口。com。温特延。ServiCe。MarkServiCe@Servicepublic类MarkServiceImpl实现标记服务{ @覆盖公共字符串水印(CommonsMultipartFile文件,String uploadPath,String reaploaddpath){//TODO自动生成的方法存根字符串徽标文件名=“徽标”文件。getoriginalfilename();OutputStream os=null请尝试{ Image image2=imageio。读取(文件。getinputstream());int width=图像2。get width(null);int height=图像2。GetHeight(null);BufferedImage bufferImage=新的BufferedImage(宽度、高度、BufferedImage .TYPE _ INT _ RGB);图形2d g=bufferimage。create graphics();g.drawImage(image2,0,0,宽度,高度,null);g.setFont(新字体(FONT_NAME,FONT_STYPE,FONT _ SIZE));g .设置COlOr(FONT _ COlOr);int width 1=FONT _ SIZE * GetTextLength(MARK _ TExT);int height 1=FONT _ SiZeint width diff=width-width 1;int HeightDiff=height-height 1;int x=Xint y=Yif(xwidth diff){ x=width diff;} if(yHathDiff){ y=HeightDiff;} g . setcomposite(alpha composite。getinstance(alpha复合.SRC _ ATOP,ALPHA));g .绘图(MARK _ TEXT,x,y FONT _ SIZE);g .处置();OS=新文件输出流(RealUPLoadPath '/' LogFilename);JPEGImageEncoder en=jpegcodec。createjpegencoder(OS);恩。编码(Bufferi图像);} catch(异常e){ e . print stack trace();}最后{ if(os!=null){尝试{ OS。close();} catch (IOException e) { //TODO自动生成的捕捉块e . print stack trace();} } }返回上传路径“/”日志文件名;} public int getTextLength(String text){ int length=text。length();for(int I=0;itext。length();I){字符串s=字符串。(文本)的值。charat(I));if(s . GetBytes()。长度1){ length;} }长度=长度%2==0?长度/2:长度/2 1;返回长度;}}6.编写页面index.jsp

表单操作='水印'方法=' post ' enctype=' multipart/form-data ' H2请选择上传的图片/h2 div类=“表单组”br输入类型=' file ' name=' image ' id=' image '/div class=' form-group ' br按钮类=' BTN BTN-成功'类型='提交'开始上传/button /div /formwatermark.jsp

div class=' panel-body ' img class=' img-responsive img-rounded ' src=' http : $ { page context。请求。上下文路径} $ { imageURl } '/img class=' img-responsive img-rounded ' src=' http : $ { page context。请求。上下文路径} $ { logoImageUrl } '/a class=' BTN BTN-警告' href=' $ { page context。请求。上下文}”返回/a /div总结

爪哇有专门图像的处理包,同样应该可以实现水印功能,查了资料小试下来发现爪哇岛实现水印还是非常方便的,水印可以是图片或者文字,后期会有水印图片水印,以后有需要可以写个代码批量处理自己的图片了。

以上就是本文的全部内容,希望对大家学习爪哇岛程序设计有所帮助。

更多资讯
游戏推荐
更多+