徐州北大青鸟
当前位置: 主页 > 学在青鸟 > 编程技巧 >

利用Java加图片水印以及文字水印方法

时间:2016-10-12 11:14来源:中博IT教育 作者:中博IT教育 点击:
今天有个学生说,他想把他上传的图片加上个水印的功能,以防止别人盗用他的图片。他认为他的图片资料很重要。所以。。。 好,有需求,我们就满足他,以前我也比较少写操作图片

今天有个学生说,他想把他上传的图片加上个水印的功能,以防止别人盗用他的图片。他认为他的图片资料很重要。所以。。。
好,有需求,我们就满足他,以前我也比较少写操作图片的api,所以对图片加水印的功能也一直没接触,不过对于现在网络来说。这些根本就不算什么,上网一搜,就找了几个程序出来,现在我重构了下,使它满足我的要求,现在发布出来,希望可以给有需要的朋友一点帮助。
 

java 代码
 
  1. public final class ImageUtils {
  2. public ImageUtils() {
  3.  
  4. }
  5.  
  6. public final static String getPressImgPath(){
  7. return ApplicationContext.getRealPath("/template/data/util/shuiyin.gif");
  8. }
  9.  
  10. /**
  11. * 把图片印刷到图片上
  12. * @param pressImg -- 水印文件
  13. * @param targetImg -- 目标文件
  14. * @param x
  15. * @param y
  16. */
  17. public final static void pressImage(String pressImg, String targetImg, int x, int y) {
  18. try {
  19. File _file = new File(targetImg);
  20. Image src = ImageIO.read(_file);
  21. int wideth = src.getWidth(null);
  22. int height = src.getHeight(null);
  23. BufferedImage image = new BufferedImage(wideth, height,
  24. BufferedImage.TYPE_INT_RGB);
  25. Graphics g = image.createGraphics();
  26. g.drawImage(src, 0, 0, wideth, height, null);
  27.  
  28. // 水印文件
  29. File _filebiao = new File(pressImg);
  30. Image src_biao = ImageIO.read(_filebiao);
  31. int wideth_biao = src_biao.getWidth(null);
  32. int height_biao = src_biao.getHeight(null);
  33. g.drawImage(src_biao, wideth - wideth_biao - x, height - height_biao -y, wideth_biao,
  34. height_biao, null);
  35. // /
  36. g.dispose();
  37. FileOutputStream out = new FileOutputStream(targetImg);
  38. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  39. encoder.encode(image);
  40. out.close();
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. }
  45.  
  46. /**
  47. * 打印文字水印图片
  48. * @param pressText --文字
  49. * @param targetImg -- 目标图片
  50. * @param fontName -- 字体名
  51. * @param fontStyle -- 字体样式
  52. * @param color -- 字体颜色
  53. * @param fontSize -- 字体大小
  54. * @param x -- 偏移量
  55. * @param y
  56. */
  57.  
  58. public static void pressText(String pressText, String targetImg, String fontName,int fontStyle, int color, int fontSize, int x, int y) {
  59. try {
  60. File _file = new File(targetImg);
  61. Image src = ImageIO.read(_file);
  62. int wideth = src.getWidth(null);
  63. int height = src.getHeight(null);
  64. BufferedImage image = new BufferedImage(wideth, height,
  65. BufferedImage.TYPE_INT_RGB);
  66. Graphics g = image.createGraphics();
  67. g.drawImage(src, 0, 0, wideth, height, null);
  68. // String s="www.qhd.com.cn";
  69. g.setColor(Color.RED);
  70. g.setFont(new Font(fontName, fontStyle, fontSize));
  71.  
  72.  
  73. g.drawString(pressText, wideth - fontSize - x, height - fontSize/2 - y);
  74. g.dispose();
  75. FileOutputStream out = new FileOutputStream(targetImg);
  76. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  77. encoder.encode(image);
  78. out.close();
  79. } catch (Exception e) {
  80. System.out.println(e);
  81. }
  82. }
  83.  
  84. public static void main(String[] args) {
  85. pressImage("C:/shuiyin/shuiyin.gif", "c:/shuiyin/DSC02342.JPG", 20 ,20);
  86. }
  87. }
(责任编辑:代码如诗)
------分隔线----------------------------
栏目列表
推荐内容