为图片加水印-Java
来源:互联网 发布:淘宝男童棉服 编辑:程序博客网 时间:2024/06/03 19:26
程序中提供两个方法,一个使用一个透明的GIF文件(mark.gif)为图片加水印,另一个将一个字符串作为水印加入图片中,两个方法均可设置透明度,并能设置倾斜角度。
import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileFilter;import javax.imageio.ImageIO;public class PressWaterMark {/** * @param srcFile * 要加水印的源文件 * @param waterMarkFile * 水印文件,为保证质量,最好使用Gif格式,背景设为透明 * @param alpha * 透明度,0~1之间,0透明,1不透明 * @param degree * 水印旋转角度 * @throws Exception * 使用一个水印文件为源文件加上水印,水印铺满全部图片 */public final static void pressImage(File srcFile, File waterMarkFile,float alpha, double degree) throws Exception {// 加载目标图片Image srcImg = ImageIO.read(srcFile);int src_width = srcImg.getWidth(null);int src_height = srcImg.getHeight(null);// 将图片加载到内存BufferedImage bufImg = new BufferedImage(src_width, src_height,BufferedImage.TYPE_INT_RGB);Graphics2D g = bufImg.createGraphics();g.drawImage(srcImg, 0, 0, src_width, src_height, null);// 加载水印图片Image waterMarkImage = ImageIO.read(waterMarkFile);int w_width = waterMarkImage.getWidth(null);int w_height = waterMarkImage.getHeight(null);// 设置透明度g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));g.rotate(-Math.PI / 180 * degree, (double) bufImg.getWidth() / 2,(double) bufImg.getHeight() / 2);// 设置水印图片位置for (int x = 0; x < src_width; x += 3 * w_width)for (int y = 0; y < src_height; y += 3 * w_height)// 将水印图片“画”在目标图片的指定位置g.drawImage(waterMarkImage, x, y, w_width, w_height, null);g.dispose();ImageIO.write(bufImg, "JPG", srcFile);}/** * @param waterText * 水印字符串 * @param font * 字符串字体 * @param alpha * 透明度,0~1之间,0透明,1不透明 * @param degree * 字符串旋转角度 * @throws Exception * ImageIO读取失败时,抛出异常 */public static void pressText(File scrFile, String waterText, Font font,float alpha, double degree) throws Exception {// 加载目标图片Image srcImg = ImageIO.read(scrFile);int src_width = srcImg.getWidth(null);int src_height = srcImg.getHeight(null);// 将目标图片加载到内存BufferedImage bufImg = new BufferedImage(src_width, src_height,BufferedImage.TYPE_INT_RGB);Graphics2D g = bufImg.createGraphics();g.drawImage(srcImg, 0, 0, src_width, src_height, null);// 设置水印文字透明度g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));g.rotate(-Math.PI / 180 * degree, (double) bufImg.getWidth() / 2,(double) bufImg.getHeight() / 2);g.setFont(font);g.setColor(Color.CYAN);// 设置水印文字的位置int t_width = font.getSize() * waterText.length();int t_height = font.getSize();// 写水印文字for (int x = 0; x < src_width; x += t_width + 150)for (int y = 0; y < src_height; y += 3 * t_height)// 将水印图片“画”在目标图片的指定位置g.drawString(waterText, x, y);g.dispose();// 保存目标图片ImageIO.write(bufImg, "JPG", scrFile);}public static void main(String args[]) throws Exception {File f = new File("d:/ccc");File imgFiles[] = f.listFiles(new ImageFilter());for (File x : imgFiles) {System.out.println(x.getName() + "正在加水印...");pressImage(x, new File("d:/ccc/mark.gif"), 0.2f, 10);}System.out.println("谢谢使用!");}}
- 为图片加水印-Java
- 为图片加水印
- Java 图片加水印
- java图片加水印
- Java图片加水印
- java加图片水印
- java 图片加水印
- java 图片加水印
- 为已定图片加水印
- css为图片加水印
- java给图片加水印,文字水印
- java-图片加水印,文字水印
- jsp,java加图片水印,文字水印
- 图片加水印JAVA实现
- java 图片加水印源码
- java图片加水印文字
- 一段为图片加水印的代码
- 程序为图片加水印的方法
- [Hack][grub2] 单boot分区,Feodra和Ubuntu启动共存
- C#程序设计(二十)----电子时钟
- css3 -webkit-animation与-webkit-keyframes
- VC6.0基础知识使用小结
- #pragma命令详解
- 为图片加水印-Java
- KMP算法
- Android ApiDemos示例解析(11):App->Activity->Receive Result
- SQL通过PIVOT/UNPIVOT实现行列转换
- 中国国旗图片生成代码-jsp版本
- 如何根据一个数组建立最大堆
- 敏捷软件开发宣言及敏捷宣言遵循的原则
- C++复制控制之复制构造函数(一)
- 补充,加水印程序有一个文件过滤器,可以选择指定的图片文件