Java实现图片添加水印
参考别人的感觉挺好玩,还没仔细研究,先上代码。
package WaterMark; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream; /**
* Created by zhengbin06 on 2017/2/5.
*/
public class WaterMarkFont {
/**
* @param args
*/
public static void main(String[] args) { File srcImgFile = new File("/Users/zhengbin/Downloads/2.jpg");
String logoText = "www.cnblogs.com/zhengbin"; File outputImageFile = new File("/Users/zhengbin/Downloads/2-1.jpg"); File outputRotateImageFile = new File("/Users/zhengbin/Downloads/2-2.jpg"); createWaterMarkByText(srcImgFile, logoText, outputImageFile); createWaterMarkByText(srcImgFile, logoText, outputRotateImageFile, 45);
} public static void createWaterMarkByText(File srcImgFile, String logoText,
File outputImageFile) {
createWaterMarkByText(srcImgFile, logoText, outputImageFile, 0);
} public static void createWaterMarkByText(File srcImgFile, String logoText,
File outputImageFile, double degree) {
OutputStream os = null;
try {
Image srcImg = ImageIO.read(srcImgFile); // 定义图像的宽高和图像类型
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); // 创建一个 Graphics2D,可以将它绘制到此 BufferedImage 中
// Graphics2D,它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。
Graphics2D g = buffImg.createGraphics(); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(null),
srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
null); if (degree>0) {
// 旋转
// 将用角度表示的角转换为近似相等的用弧度表示的角
g.rotate(Math.toRadians(degree),
(double) buffImg.getWidth() / 2,
(double) buffImg.getHeight() / 2);
} g.setColor(Color.RED); g.setFont(new Font("宋体", Font.BOLD, 36)); float alpha = 0.8f;
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha)); // 烙上水印
g.drawString(logoText, buffImg.getWidth()/3, buffImg.getHeight()/2); // 释放此图形的上下文以及它使用的所有系统资源
g.dispose(); os = new FileOutputStream(outputImageFile); // 生成图片
ImageIO.write(buffImg, "JPG", os); } catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != os)
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Java实现图片添加水印的更多相关文章
- JAVA给图片添加水印
		
package com.test; import org.junit.Test; import javax.imageio.ImageIO; import java.awt.*; import jav ...
 - java实现给图片添加水印
		
package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...
 - java.imageIo给图片添加水印
		
最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印; 一下提供下个方法,希望大家可以用得着: package com.blogs.image; import java ...
 - Java给图片和PDF文件添加水印(图片水印和文字水印)
		
有时候我们看到的图片或者PDF文件会自动加上水印.分为文字水印和图片水印. ----------------------------图片水印---------------------------- 1 ...
 - Java 图片添加水印效果
		
package com.xiaowu.drawwater.demo; import java.awt.AlphaComposite; import java.awt.Graphics2D; impor ...
 - java实现图片和pdf添加铺满文字水印
		
依赖jar包 <!-- pdf start --> <dependency> <groupId>com.itextpdf</groupId> <a ...
 - Java中图片压缩处理
		
原文http://cuisuqiang.iteye.com/blog/2045855 整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你 ...
 - java获取图片原始尺寸
		
java获取图片原始尺寸 URL url = null; InputStream is = null; BufferedImage img = null; try { url = new URL(pi ...
 - Android 图片添加水印图片或者文字
		
给图片添加水印的基本思路都是载入原图,添加文字或者载入水印图片,保存图片这三个部分 添加水印图片: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
 
随机推荐
- JavaScript日历控件开发  C# 读取 appconfig文件配置数据库连接字符串,和配置文件  List<T>.ForEach 调用异步方法的意外  ef 增加或者更新的习惯思维  asp.net core导入excel  一个二级联动
			
JavaScript日历控件开发 概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebc ...
 - Tensorflow运行程序报错 FailedPreconditionError
			
1 FailedPreconditionError错误现象 在运行tensorflow时出现报错,报错语句如下: FailedPreconditionError (see above for trac ...
 - 异步加载js文件的方法总结
			
方法一,jQuery.getScript HTML 代码: 代码如下 复制代码 <button id="go">Run</button><div cl ...
 - 在ToolStrip中加入具有更好体验性的DateTimePicker
			
一. 需求的产生 很多时候,需要根据年月或日期来检索数据.在我的数据库中,如果只需要以月为单位,我一般按照200801这样的格式(yyyyMM)保存为int类型.在做数据检索时,是根据工具栏 ...
 - hibernate的native sql查询
			
在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQ ...
 - hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解
			
hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解 一,环境: 1,主机规划: 集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接 ...
 - django form 对象is_bound属性
			
问题: 如果判断一个form实例中有没有数据? bug方法: 通过form实例的is_valid()方法来验证 1.Form类的定义 class YourName(Form): your_name = ...
 - c# xml 输出注释格式控制
			
string str="\n\t///*! 妆容类物品子分类 */\n\tenum MakeupSubType\n\t{\n\t\tItem_InvalidMakeupSubType = - ...
 - Python 3 的安装
			
python 3 的安装: 背景: 之前都是在Pychram上写,我的windows下的python版本是3.5,今天要把一个小脚本上到生产环境上. 无奈我服务器上的python版本是2.6.6.所以 ...
 - iOS数据库离线缓存思路和网络层封装
			
一直想总结一下关于iOS的离线数据缓存的方面的问题,然后近期也简单的对AFN进行了再次封装.全部想把这两个结合起来写一下.数据展示型的页面做离线缓存能够有更好的用户体验,用户在离线环境下仍然能够获取一 ...