图片添加水印
在平时的web项目中我们可能需要在图片上加一些属于自己的东西,就像weibo发图片会带有微博名的水印,这个功能可以用在我们的web项目中,这样我们的图片将会与众不同。下面是实现该功能的代码
这个是主要的类
1 package ciacs.picture.test; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Graphics; 5 import java.awt.Image; 6 import java.awt.image.BufferedImage; 7 import java.io.FileOutputStream; 8 9 import javax.swing.ImageIcon; 10 11 import com.sun.image.codec.jpeg.JPEGCodec; 12 import com.sun.image.codec.jpeg.JPEGImageEncoder; 13 14 /* 15 * @author:CIACs 16 * 17 */ 18 19 20 public class WaterMark{ 21 22 public boolean addMark(String file) 23 { 24 boolean flag=true; 25 26 String str = "http://www.cnblogs.com/zhi-hao/"; 27 try 28 { 29 ImageIcon imgIcon=new ImageIcon(file); 30 Image img = imgIcon.getImage(); 31 int width = img.getWidth(null); 32 int height = img.getHeight(null); 33 //create target image 34 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 35 //get a graphics pen 36 Graphics g = image.createGraphics(); 37 //draw source image 38 g.drawImage(img, 0, 0, width, height, null); 39 40 //可以改变画笔的颜色 41 42 g.setColor(Color.blue); 43 //可以设置你要的字体、颜色、大小 44 g.setFont(new Font("Courier", Font.PLAIN, 23)); 45 //设置水印出现在图片的位置 46 g.drawString(str, 280, height-23); 47 g.dispose(); 48 FileOutputStream os = new FileOutputStream(file); 49 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os); 50 encoder.encode(image); 51 52 }catch(Exception e) 53 { 54 System.out.println(e.getMessage()); 55 flag=false; 56 } 57 return flag; 58 } 59 60 }
下面这个是测试类
1 package ciacs.picture.test; 2 3 public class test{ 4 5 public static void main(String[] args) { 6 WaterMark mark = new WaterMark(); 7 //添加的为图片所在的路径 8 mark.addMark("D:/test.png"); 9 10 11 12 } 13 14 }
结果:
这个加水印的功能稍加修改就可以作为组件提供给我们的web项目中使用。
由于水平有限,文章中难免有错误的地方,欢迎指出错误或不足之处,共同进步。欢迎转载,转载时请注明出处,谢谢。
——by CIACs