`

给图片加水印

    博客分类:
  • Java
阅读更多

// 将 s 进行 BASE64 编码
 public static String getBASE64(String s) {
  if (s == null)
   return null;
  return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
 }

 // 将 BASE64 编码的字符串 s 进行解码
 public static String getFromBASE64(String s) {
  if (s == null)
   return null;
  BASE64Decoder decoder = new BASE64Decoder();
  try {
   byte[] b = decoder.decodeBuffer(s);
   return new String(b);
  } catch (Exception e) {
   return null;
  }
 }

 
 
 public static int getLength(String text) {      
        int length = 0;      
        for (int i = 0; i < text.length(); i++) {      
            if (new String(text.charAt(i) + "").getBytes().length > 1) {      
                length += 2;      
            } else {      
                length += 1;      
            }      
        }      
        return length / 2;      
    }      

 //参数说明  水印图片 目标图片 位置 透明度
  public final static void pressImage(String pressImg, String targetImg, int x, int y, float alpha) {      
         try {      
             File img = new File(targetImg);  
             System.out.println(img.length());
             Image src = ImageIO.read(img);      
             int wideth = src.getWidth(null);      
             int height = src.getHeight(null);   
             System.out.println(wideth+"---"+height);
             BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB);      
             Graphics2D g = image.createGraphics();      
             g.drawImage(src, 0, 0, wideth, height, null);      
             // 水印文件      
             Image src_biao = ImageIO.read(new File(pressImg));      
             int wideth_biao = src_biao.getWidth(null);      
             int height_biao = src_biao.getHeight(null); 
             System.out.println(wideth_biao+"###"+height_biao);
             g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));      
             g.drawImage(src_biao, (wideth - wideth_biao) / 2, (height - height_biao) / 2, wideth_biao, height_biao, null);      
             // 水印文件结束      
             g.dispose();      
             ImageIO.write((BufferedImage) image, "jpg", img);      
         } catch (Exception e) {      
             e.printStackTrace();      
         }      
     }      
 
  public static void pressText(String pressText, String targetImg, String fontName, int fontStyle, Color color, int fontSize, int x, int y, float alpha) {  
         try {  
             File img = new File(targetImg);  
             Image src = ImageIO.read(img);  
             int width = src.getWidth(null);  
             int height = src.getHeight(null);  
             BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  
             Graphics2D g = image.createGraphics();  
             g.drawImage(src, 0, 0, width, height, null);  
             g.setColor(color);  
             g.setFont(new Font(fontName, fontStyle, fontSize));  
             g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));  
             g.drawString(pressText, (width - (getLength(pressText) * fontSize)) / 2 + x, (height - fontSize) / 2 + y);  
             g.dispose();  
             ImageIO.write((BufferedImage) image, "jpg", img);  
         } catch (Exception e) {  
             e.printStackTrace();  
         }  
     }  

 

public static void main(String[] args) throws IOException {
  pressImage("D://My Documents//My Pictures//v.jpg", "D://My Documents//My Pictures//6.jpg", 0, 0, 0.5f);
  //pressText("我是文字水印", "D://My Documents//My Pictures//vladstudio_learningtofly_1152x864.jpg", "黑体", 36, Color.red, 80, 0, 0, 0.1f);            

 }

分享到:
评论

相关推荐

    微信小程序用Canvas给图片加水印,拼接图片,制作名片PHelper-master.zip

    1. **给图片加水印**: 在这个项目中,开发者可能会使用`wx.createSelectorQuery()`来选取Canvas元素,然后通过`canvasContext.drawImage()`方法加载图片并将其绘制到Canvas上。接着,利用`canvasContext....

    Delphi给图片加水印

    应为项目需要,给图片加图片水印,查阅了许多资料都不理想,最后使用ImageEN 5.2.0 FullSource控件解决,效果比较满意。 案例使用delphi7+ImageEN 5.2.0 FullSource制作,里面有ImageEN控件的安装方法。

    给图片加水印 批量给图片加水印

    "给图片加水印 批量给图片加水印"这个主题涉及到图像处理技术,特别是批量处理方面,这对于摄影师、设计师或者内容创作者来说非常重要。下面我们将详细探讨如何实现这一功能,以及涉及到的相关技术。 首先,我们要...

    Flex_给图片加水印

    在给图片加水印时,我们需要用到ActionScript的位图操作类,如`flash.display.BitmapData`和`flash.geom.Matrix`。 2. **BitmapData对象**: 这是ActionScript中用于处理位图图像的核心类。我们可以创建一个`...

    批量给图片加水印

    批量给图片加水印就是其中一种高效的工作方式,它可以确保您的原创作品得到保护,防止被他人盗用。以下是一些关于“批量给图片加水印”的关键知识点: 1. **水印**:水印是一种视觉标记,通常用于在图像上添加版权...

    delphi实现给图片加水印2用ImageEn控件

    ### Delphi 实现给图片添加水印:使用 ImageEn 控件 #### 背景介绍 在 Delphi 开发环境中,实现对图像处理的需求时,经常会遇到需要为图片添加水印的情况。添加水印不仅可以保护图片版权,还能提高品牌识别度。本文...

    批量给图片加水印软件

    批量给图片加水印的功能能够大大提高工作效率,保护版权,或者为个人或企业品牌做宣传。下面我们将详细探讨批量给图片加水印的相关知识点。 一、什么是水印 水印通常是指在图片上添加的一种半透明或不透明的标识,...

    pb 给图片加水印 watermark

    标题“pb 给图片加水印 watermark”表明我们将讨论如何在PowerBuilder程序中给图片添加水印。 首先,描述中提到了两个重要的动态链接库文件:ijl15.dll和webpictools.dll。这些是外部组件,通常由第三方开发,用于...

    QT给图片加水印(pro工程+代码)

    QT给图片加水印是一种常见的图像处理操作,用于在图片上添加标识或版权信息,防止未经授权的使用。本文将深入探讨如何使用Qt框架实现这一功能,包括必要的编程知识和步骤。 首先,Qt是一个跨平台的应用程序开发框架...

    给图片加水印的组件

    本文将详细讨论“给图片加水印的组件”的相关知识,包括水印的基本概念、加水印的目的、水印技术的实现原理以及如何使用这款内附说明资料的水印组件。 首先,我们要理解什么是水印。水印是图像处理中的一个术语,指...

    Java给图片加水印

    在提供的压缩包文件名列表中,我们看到有三个与“给图片加水印”相关的文本文件:`给图片加水印2.txt`、`给图片加水印1.txt`和`给图片加水印.txt`。这些文件可能包含了具体的代码示例、步骤解释或不同实现方式。通过...

    在线给图片加水印-照片上添加文字工具源码分享

    在线图片加水印,canvas加水印,在线给图片加水印、照片上添加文字,通过前端canvas给你的证件加上水印,防止证件被盗。 演示地址:http://watermark.dxcweb.com/

    按键精灵IOS手机版图片加水印

    按键精灵手机版IOS,图片加水印源码,可实现给图片加水印。把水印图片加到主图片里面。暂时只支持IOS系统。

    给一张图片加 水印(源代码)

    这个主题的标题“给一张图片加水印(源代码)”表明我们将探讨如何通过编程实现这一功能。描述中提到的“含源代码”意味着我们将深入到实际的代码实现层面。标签“给图片加水印”、“水印”和“加水印”进一步确认了...

    使用 ImageEnView 给图片加水印,及建缩略图.docx

    总结起来,使用 ImageEnView 给图片加水印和创建缩略图涉及的关键知识点包括: 1. `TImageEnView` 组件的使用,包括加载、保存、调整大小和裁剪图片。 2. 图片纵横比的保持,避免拉伸导致失真。 3. 图片模糊处理,...

    C#给图片加水印工具类

    C#给图片加水印的工具类,新手可以参考,也可以直接拿来用

    用ASP用aspjpegwsImage组件给图片加水印-存档文章

    用ASP用aspjpegwsImage组件给图片加水印

Global site tag (gtag.js) - Google Analytics