永发信息网

怎么用FW把下载下来的水印打到图片上(越详细越好)?

答案:1  悬赏:10  手机版
解决时间 2021-05-19 21:14
怎么用FW把下载下来的水印打到图片上(越详细越好)?
最佳答案
用过滤器,等我上线给你,不要结问题哦 package com.jc.ts.services; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class WaterMark { @SuppressWarnings("deprecation") public static void createMarkSize(String sizeContext,HttpServletRequest request,HttpServletResponse response) { try { String path=request.getRealPath(request.getServletPath()); FileInputStream in=new FileInputStream(path); Image src=ImageIO.read(in); int w=src.getWidth(null); int h=src.getHeight(null); BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);//构建画板 Graphics g=img.getGraphics();//得到画笔 g.drawImage(src,0,0,w,h,null);//把源图片写入画板 g.setColor(Color.red); g.drawString(sizeContext,10,5); // 添加文字 g.dispose();//生成图片 JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream()); e.encode(img); response.getOutputStream().close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ImageFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @SuppressWarnings("deprecation") public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response) { try { FileInputStream file=new FileInputStream(localPath); Image fimg=ImageIO.read(file); int fw=fimg.getWidth(null); int fh=fimg.getHeight(null); String path=request.getRealPath(request.getServletPath()); FileInputStream in=new FileInputStream(path); Image src=ImageIO.read(in); int w=src.getWidth(null); int h=src.getHeight(null); BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);//构建画板 Graphics g=img.getGraphics();//得到画笔 g.drawImage(src,0,0,w,h,null);//把原图片写入画板 g.drawImage(fimg,w-20,h-15,fw,fh,null);//把水印图片写入画板 g.dispose();//生成图片 JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream()); e.encode(img); response.getOutputStream().close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ImageFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @SuppressWarnings("deprecation") public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response,int width,int height) { try { FileInputStream file=new FileInputStream(localPath); Image fimg=ImageIO.read(file); int fw=fimg.getWidth(null); int fh=fimg.getHeight(null); String path=request.getRealPath(request.getServletPath()); FileInputStream in=new FileInputStream(path); Image src=ImageIO.read(in); int w=src.getWidth(null);//w为你过滤图片的宽度 int h=src.getHeight(null);//h为你过滤图片的长度 BufferedImage img=new BufferedImage(w+width,h+height,BufferedImage.TYPE_INT_RGB);//构建画板(画板的宽度为两个图片之和) Graphics g=img.getGraphics();//得到画笔 g.drawImage(src,0,0,w,h,null);//把原图片写入画板 g.drawImage(fimg,width,height,fw,fh,null);//把水印图片写入画板 g.dispose();//生成图片 JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream()); e.encode(img); response.getOutputStream().close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ImageFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 注意第三个方法的注释地方g.drawImage(fimg,width,height,fw,fh,null);根据参数你在调调(放原图下面的) 过滤器调用 package com.jc.ts.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jc.ts.services.WaterMark; public class WaterFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest)arg0; HttpServletResponse response=(HttpServletResponse)arg1; //WaterMark.createMarkSize("南京ts", request, response); //WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response); WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response,20,30); //注意路径为绝对路径且三个效果不能同时执行 } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } } web.xml配置(写在servlet上面) <filter> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <filter-name>WaterFilter</filter-name> <filter-class>com.jc.ts.filter.WaterFilter</filter-class> </filter> 希望你能满意。。。。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一道有趣的智力题
油锯老往一面偏是怎么回事?
家里装一条网线,连四台机子怎样能保持网速较
十面埋伏电影台词,寻找《十面埋伏》中的一段
炎亚纶拍完戏没啊?飞轮海第四张专辑什么时候
怒灵鞋 和 寂静鞋 都值多少钱啊?
狂战怎麽加点
菲律宾工作签证要多久,菲律宾旅行签证办理需
振华OBEEK928怎么样才能下载手机QQ
甄子丹到底进好莱坞了没有,《精武风云》什么
描写人物头发四字词语
如何区分创业板,权证,股票?
俄语考级报名
请问赛尔号的精灵:“果冻鸭”在哪呀?他的级
为什么发送的会员表情不能播放
推荐资讯
我的QQ 很久以前就是 13级 为什么现在不升级
皮肤现在越来越不好了
BOBO头适合怎样打扮?
如何使幼儿快速学会走路?
头发白了好多,全部集中在头顶的位置,除了染
交通银行信用卡怎么调整支付限额
为什么就这样几句短短的话语
暗牧的暗影系魔法是不是必须在暗影形态下施放
怎样一次可以买好多花种子呢
刑事犯罪记录为什么要作永久保留
翻译成英语,按初二的知识来回答。给某人提供
乌龙茶,红茶,绿茶,花茶?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?