当前位置: 首页 > news >正文

Java实现在图片上添加水印图片和水印文字

public static void main(String[] args)
 { 
  createMark("e://image//a.gif","e://image//b.jpg");  
 } 
 
 /**
  * 在图片上添加水印图片和文字
  * @param filePath 原图片文件路径
  * @param watermark 水印图片文件路径
  * @return 添加成功返回true,否则返回false
  */
 public static boolean createMark(String filePath, String watermark)
 {
  //读取原图片
  ImageIcon imgIcon = new ImageIcon(filePath);
  Image theImg = imgIcon.getImage();
  //读取标签图片
  ImageIcon waterIcon = new ImageIcon(watermark);
  Image waterImg = waterIcon.getImage();
  
  int width = theImg.getWidth(null);
  int height = theImg.getHeight(null);
  
  //创建一个和原图片同大小的新空白图片
  BufferedImage bimage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
  Graphics2D g = bimage.createGraphics();
  //设置字体
  Font font = new Font("SansSerif",Font.BOLD,30);
  g.setFont(font);
  //设置前景色
  g.setColor(Color.red);
  //设置背景色
  g.setBackground(Color.white);
  //画原图
  g.drawImage(theImg, 0, 0, null);
  //画水印图
  g.drawImage(waterImg, 100, 100, null);
  //画字
  g.drawString("中国人民共和国", 10, 10);  
  g.dispose();
  FileOutputStream out = null;
  try {
   out = new FileOutputStream(filePath);
   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
   JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
   param.setQuality(50f, true);
   encoder.encode(bimage, param);   
  }
  catch (Exception e)
  {
   return false;
  }
  finally
  {
   if(out!=null)
   {
    try
    {
     out.close();
     out = null;
    }
    catch(Exception e)
    {}
   }
  }
  return true;
 } 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • POJ2406【KMP-next数组】
  • 大访问量网站的mysql参数设置
  • sizeof判断所占空间大小
  • flex滚动字幕和图片效果
  • 一个IP,一个linux服务器,两个项目,两个域名;如何将两个域名配置到同一个IP的两个项目中。...
  • java生成PDF格式文档
  • VRRP笔记三:配置keepalived为实现haproxy高可用的双主模型配置文件示例:
  • 记一次Arch的安装经历
  • windows xp常用命令集
  • eclipseJVM terminated. Exit code=-1
  • java图片验证码
  • copyEvens
  • 字符设备驱动程序之异步通知
  • HTTP 错误 403.9 - 禁止访问:连接的用户过多
  • 如何使用flex皮肤
  • 分享的文章《人生如棋》
  • IndexedDB
  • Vue 重置组件到初始状态
  • vue2.0项目引入element-ui
  • vue脚手架vue-cli
  • 测试开发系类之接口自动化测试
  • 精彩代码 vue.js
  • 嵌入式文件系统
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 算法---两个栈实现一个队列
  • 第二十章:异步和文件I/O.(二十三)
  • 关于Android全面屏虚拟导航栏的适配总结
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 数据可视化之下发图实践
  • 组复制官方翻译九、Group Replication Technical Details
  • ​数据链路层——流量控制可靠传输机制 ​
  • #QT(QCharts绘制曲线)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (145)光线追踪距离场柔和阴影
  • (2)STL算法之元素计数
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (ibm)Java 语言的 XPath API
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Oracle)SQL优化技巧(一):分页查询
  • (ZT)一个美国文科博士的YardLife
  • (翻译)terry crowley: 写给程序员
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (理论篇)httpmoudle和httphandler一览
  • (六)c52学习之旅-独立按键
  • (十三)MipMap
  • (四)React组件、useState、组件样式
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)基于IDEA的JAVA基础10
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)重识new