|
|
在开发过程中,我们可能需要把生成的图片或上传的图片上面加上水印,这个用java如何实现呢?最近的项目中正好遇到了这个问题,我到网上查了相关资料,解决了此问题,今天拿出来和大家分享一下,希望能对大家的工作有所帮助。
首先是javabean 文件WaterMark.java 代码如下
/* * Created on 2005-3-29 * * TODO 实现图片的水印效果,只针对jpg */ package com.tryitsoft.image;
import java.awt.*; import java.awt.image.*; import java.io.*; import javax.swing.*; import com.sun.image.codec.jpeg.*;
public class WaterMark { /** * 给图片添加水印 * @param filePath 需要添加水印的图片的路径 * @param markContent 水印的文字 * @param markContentColor 水印文字的颜色 * @param qualNum 图片质量 * @return */ public boolean createMark(String filePath,String markContent,Color markContentColor,float qualNum) { ImageIcon imgIcon=new ImageIcon(filePath); Image theImg =imgIcon.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(); g.setColor(markContentColor); g.setBackground(Color.white); g.drawImage(theImg, 0, 0, null ); g.drawString(markContent,width/5,height/5); //添加水印的文字和设置水印文字出现的内容 g.dispose(); try{ FileOutputStream out=new FileOutputStream(filePath); JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage); param.setQuality(qualNum, true); encoder.encode(bimage, param); out.close(); }catch(Exception e) { return false; } return true; } }
jsp调用文件 tt.jsp
<%@ page language="java" pageEncoding="GBK" %> <%@ page import="java.awt.*" %> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Lomboz JSP</title> </head> <body bgcolor="#FFFFFF">
<%com.tryitsoft.image.WaterMark wm = new com.tryitsoft.image.WaterMark();
if (wm.createMark("d://map.jpg","http://www.tryitsoft.com",Color.ORANGE,70f)) { out.print("添加水印成功!"); } else { out.print("添加水印失败!"); } %> </body> </html>
ok,把上面jsp中的参数进行适当的修改看一下效果,good luck,有什么问题可以来信交流 email:rautinee@yahoo.com.cn http://www.tryitsoft.com
|
|