图片加水印,是通过图片重叠绘制实现的。实现代码如下:
public static void press(String pressImg, String pressText, String targetImg,
String fontName, int fontStyle, int color, int fontSize, int x, int y) {
try {
File _file = new File(targetImg);
Image src = ImageIO.read(_file);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(wideth, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
g.setColor(new Color(255, 255, 255, 80));
g.setFont(new Font(fontName, fontStyle, fontSize));
g.drawString(pressText, wideth - fontSize - x, height - fontSize / 2 - y);
//水印文件
File _filebiao = new File(pressImg);
Image src_biao = ImageIO.read(_filebiao);
int wideth_biao = src_biao.getWidth(null);
int height_biao = src_biao.getHeight(null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.4f));
g.drawImage(src_biao, (wideth - wideth_biao) / 2,
height - fontSize / 2 - 50, wideth_biao/2-10, height_biao/2-10, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
FileOutputStream out = new FileOutputStream(targetImg);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
图片设置透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.4f));
g.drawImage(src_biao, (wideth - wideth_biao) / 2,
height - fontSize / 2 - 50, wideth_biao/2-10, height_biao/2-10, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
文字设置透明度
文字的透明度由颜色决定,因此只需要设置颜色的RGBA即可。如下:
Graphics2D g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
g.setColor(new Color(255, 255, 255, 80));
g.setFont(new Font(fontName, fontStyle, fontSize));
g.drawString(pressText, wideth - fontSize - x, height - fontSize/ 2 - y);

转载于:https://www.cnblogs.com/asfeixue/p/4505408.html

Java图片处理(二)图片加水印相关推荐

  1. java 生成水印图片工具类, MultipartFile接收上传的图片,处理成加水印之后的MultipartFile

    /*** Created by Administrator on 2018/4/26.* JAVA图片处理工具*/ public class ImageUtil {public enum positi ...

  2. Java代码给csv文件加水印_如何给CSV数据包的图片批量加上水印

    批量加水印要用到加水印的工具了吧 一.发布产品的时候,你的图片传到网上去的时候,都有一个选项,是否要在图片上加水印,系统默认的都是加水印的,你只要不选否,都是加了的. 二.photoshop加水印 1 ...

  3. 图片添加二维码水印教程

    本博客介绍一下用jdk awt实现图片加文字水印和图片水印的方法 一.图片文字水印 import java.awt.AlphaComposite; import java.awt.Color; imp ...

  4. php 去除图片,php可以去除jpg格式图片的背景并加水印吗?

    从网上找到了这段,但我运行并不能实现,而且这个是针对png和gif格式的 $fnew = "a.png"; $img = file_get_contents($fnew); $im ...

  5. PDF转图片,合并后加水印

    public static void main(String[] args) {System.out.println("开始");System.out.println(DateTi ...

  6. 在Java生成的html页面加水印,Java在Excel中添加水印的实现(单一水印、平铺水印)...

    在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果.本文通过Java程序代码介绍具体实现方法.可添加单一水印效果,即水印是以单个文本字样来呈现:也可添加多个平铺水印效果,即 ...

  7. java实现PDF文件批量加水印

    java实现PDF批量添加水印 几个依赖包可以通过Maven下载 ##代码如下 // An highlighted block import com.spire.pdf.*;import java.a ...

  8. php 文字水印如何居中,php文字水印和php图片水印实现代码(二种加水印方法)

    $dst_path = 'dst.jpg'; $src_path = 'src.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_conten ...

  9. python图片批量处理器批量加水印重命名源码

    wx供重浩:创享日记 对话框发送:python图片批处理 免费获取完整源码源文件+说明文档+可执行文件等 在PyCharm中运行<图片批量处理器>即可进入如图1所示的系统主界面.在该界面中 ...

  10. canvas笔记-canvas加载图片及放缩及加水印(两canvas同时使用)

    首先是图片放缩 程序运行截图如下: 拉动滑动条: 源码如下: <!DOCTYPE html> <html lang="en"> <head>&l ...

最新文章

  1. c++ 学习笔记 c++ 引用C库注意点:#ifdef __cplusplus 倒底是什么意思?
  2. 域netbios名什么意思_域渗透(二):域环境搭建
  3. 织梦在线艺术字体转换生成平台网站源码
  4. SourceTree超前一个版本,落后N个版本
  5. 【智能司法】可解释的Rationale增强罪名预测系统
  6. 【Autoware自动驾驶-开源项目实践】大家快来入门体验啦
  7. python爬取景点信息_Python用Pyspider爬取TripAdvisor的景点信息
  8. Echarts柱状图配置
  9. cad插入块_足够让你牛逼的CAD动态块教程
  10. 微信提现显示服务器异常,微信零钱提现为什么显示提示交易异常 解决办法是什么...
  11. 一款不错的Android环形进度条
  12. 维京小队3dm中文版|维京小队中文免安装版
  13. SuperMap iDesktop 提取影像边界裁剪去除无值区域处理方案
  14. java 蓝桥杯 天干地支
  15. windows下linux子系统(Ubuntu)配置(基础配置+zsh)
  16. 你的苹果Mac键盘锁住了要怎么办呢
  17. 陈关荣老师整理的复杂网络的…
  18. 反射如何打破封装性_打破产品建议的复杂性
  19. 物体监测:Sliding Window
  20. 苹果手机php怎么更新,Apple Watch固件系统怎么更新升级?

热门文章

  1. 【theano-windows】学习笔记一——theano中的变量
  2. LeetCode412Fizz Buzz
  3. 第二篇 python基础知识总结:数据、运算符
  4. Mysql - 安装与配置
  5. SQL Server 数据库查找重复记录的几种方法
  6. mysql高可用方案MHA介绍
  7. protobuf---messge嵌套get set
  8. 链式调用setTimeout()与setInterval()的区别
  9. 数据可视化(BI报表的开发)第四天
  10. 17 | 如何正确地显示随机消息?