`
hxp520520
  • 浏览: 4832 次
文章分类
社区版块
存档分类
最新评论

给图片添加水印或文字

 
阅读更多
package weather.com.cn.data;
import java.awt.Color;  
import java.awt.Font;  
import java.awt.Graphics2D;  
import java.awt.image.BufferedImage;  
import java.io.File;  
import java.io.IOException;  
import java.net.URL;  
  
import javax.imageio.ImageIO;  
  
public class UpdateImg {  
	/**
	 * 给图片添加水印或文字
	 */
    private Font font = new Font("宋体",Font.BOLD,50) ;// 添加字体的属性设置  
    private Graphics2D g=null;     
    private int fontsize=0;  
    private int x=0;  
    private int y=0;  
  
    /** 
     * 导入本地图片到缓冲区 
     */  
    public BufferedImage loadImageLocal(String imgName) {  
	    try{  
	        return ImageIO.read(new File(imgName));  
	    }catch(IOException e){  
	    	e.printStackTrace();
	    }  
	    return null;  
    }   
    /** 
     * 导入网络图片到缓冲区 
     */  
    public BufferedImage loadImageUrl(String imgName) {  
	    try{  
	        URL url=new URL(imgName);  
	        return ImageIO.read(url);  
	    }catch(IOException e){  
	    	e.printStackTrace();
	    }  
	    return null;  
    }   
    /** 
     * 生成新图片到本地 
     */  
    public void writeImageLocal(String newImage, BufferedImage img) {  
	    if(newImage != null && img != null){  
	        try{  
		        File outputfile=new File(newImage);  
		        ImageIO.write(img,"jpg",outputfile);  
	        }catch(IOException e){  
	        	e.printStackTrace();
	        }  
	    }  
    }    
    /** 
     * 设定文字的字体等 
     */  
    public void setFont(String fontStyle, int fontSize) {  
    	this.fontsize = fontSize;  
    	this.font = new Font(fontStyle,Font.PLAIN,fontSize);  
    }    
    /** 
     * 修改图片,返回修改后的图片缓冲区(只输出一行文本) --给图片增加文本
     */  
    public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y) {  
	    try{  
	        int w = img.getWidth();  
	        int h = img.getHeight(); 
	        g = img.createGraphics();  
	        g.setBackground(Color.WHITE);  
	        g.setColor(Color.RED);  
	        if(this.font != null)  
	        	g.setFont(this.font);  
	        // 验证输出位置的纵坐标和横坐标  
	        if(x >= w || y >= h){  
	        	this.x = h - this.fontsize + 2;  
	        	this.y = w;  
	        }else{  
	        	this.x = x;  
	        	this.y = y;  
	        }  
	        java.util.Random ran = new java.util.Random();     
	        for(int i=0; i<20;i++){  
		        g.setColor(Color.RED);  
		        int x1 = ran.nextInt(w);  
		        int y1 = ran.nextInt(h);  
		        g.drawLine(x1,y1,x1,y1);          
	        }  
	        if(content != null){  
	        	g.drawString(content.toString(),this.x,this.y);  
	        }  
	        g.dispose();  
	    }catch(Exception e){  
	    	e.printStackTrace();
	    }  
	    return img;  
    }     
    /** 
     * 修改图片,返回修改后的图片缓冲区(输出多个文本段) flag:true表示将内容在一行中输出;false表示将内容多行输出 
     */  
    public BufferedImage modifyImage(BufferedImage img, Object[] contentArr, int x, int y, boolean flag) {  
	    try{  
	        int w = img.getWidth();  
	        int h = img.getHeight();  
	        g = img.createGraphics();  
	        g.setBackground(Color.WHITE);  
	        g.setColor(Color.RED);  
	        if(this.font != null)  
	        	g.setFont(this.font);  
	        // 验证输出位置的纵坐标和横坐标  
	        if(x >= h || y >= w){  
		        this.x = h - this.fontsize + 2;  
		        this.y = w;  
	        }else{  
		        this.x = x;  
		        this.y = y;  
	        }         
	          
	        if(contentArr != null){  
	        	int arrlen = contentArr.length;  
		        if(flag){  
			         for(int i=0; i < arrlen; i++){  
			            g.drawString(contentArr[i].toString(),this.x,this.y);  
			            this.x+=contentArr[i].toString().length() * this.fontsize / 2 + 100;// 重新计算文本输出位置  
			           }  
		        }else{  
		            for(int i=0; i < arrlen; i++){  
		            	g.drawString(contentArr[i].toString(),this.x,this.y);  
		            	this.y+=this.fontsize + 50;// 重新计算文本输出位置  
		            }  
		        }  
	        }            
	        g.dispose();
	    }catch(Exception e){  
	        System.out.println(e.getMessage());  
	    }  
	   return img;  
    }  
    /** 
     * 修改图片,返回修改后的图片缓冲区(只输出一行文本)--给图片增加水印 
     */  
    public BufferedImage modifyImage1(BufferedImage img, String imageUri, int x, int y) {  
	    try{  
	        int w = img.getWidth();  
	        int h = img.getHeight(); 
	        g = img.createGraphics();  
	        g.setBackground(Color.WHITE);  
	        g.setColor(Color.RED);  
	        if(this.font != null)  
	        	g.setFont(this.font);  
	        // 验证输出位置的纵坐标和横坐标  
	        if(x >= w || y >= h){  
	        	this.x = h - this.fontsize + 2;  
	        	this.y = w;  
	        }else{  
	        	this.x = x;  
	        	this.y = y;  
	        }  
	        java.util.Random ran = new java.util.Random();     
	        for(int i=0; i<20;i++){  
		        g.setColor(Color.RED);  
		        int x1 = ran.nextInt(w);  
		        int y1 = ran.nextInt(h);  
		        g.drawLine(x1,y1,x1,y1);          
	        }  
	        if(imageUri != null || !"".equals(imageUri)){  
	        	BufferedImage image=ImageIO.read(new File(imageUri));
	        	g.drawImage(image, null,this.x,this.y);       
	        }  
	        g.dispose();  
	    }catch(Exception e){
	    	e.printStackTrace();
	    }  
	    return img;  
	    }  
}  

 这是我总结了别人的,非原著

 

分享到:
评论

相关推荐

    C# 图片添加水印(图片或者文字)

    在C#编程中,添加水印到图片...总之,C#结合WPF为图片添加水印提供了一种强大而灵活的方法,无论是图片还是文字水印,都可以轻松实现。通过创建DEMO并运行代码,你可以进一步熟悉这个过程,并将其应用到自己的项目中。

    C# 给图片加上文字或图片水印

    C# 给图片加上文字或图片水印,通过使用GDI+ 给图片上加水印。实现了透明文字与透明图片水印。可设置水印位置。

    winform 图片加水印文字和水印图片

    总的来说,这个WinForm应用提供了一个方便的工具,可以对图片进行多种操作,如加水印(文字和图片)、等比例缩放和压缩,这对于日常需要处理图片的工作非常实用。通过理解并应用GDI+的图形处理技术,开发者可以...

    基于Java给图片添加文字或图片水印

    在Java编程环境中,给图片添加文字或图片水印是一项常见的图像处理任务,广泛应用于版权保护、品牌宣传等领域。本项目“基于Java给图片添加文字或图片水印”旨在教授如何利用Java实现这一功能,适用于大学生的课程...

    JAVA实现给图片增加图片水印或者文字水印-依赖包

    在Java编程中,给图片添加水印是一项常见的需求,无论是为了版权保护还是视觉美化。水印可以是图片形式,也可以是文字形式。本教程将详细讲解如何使用Java来实现这一功能,重点在于介绍所需的依赖包。 首先,我们...

    java给图片添加水印

    在Java编程语言中,给图片添加水印是一项常见的任务,特别是在网站开发中,为了保护版权或者标识来源,经常需要在用户上传的图片上添加特定的文字或图像水印。以下将详细讲解如何使用Java来实现这一功能。 首先,...

    图片批量处理大小,批量加图片水印,文字水印

    解决图片的批量处理大小,批量给图片加图片水印,加文字水印

    Android 图片加图片logo水印,文字水印

    这些工具为我们添加水印提供了基础。 1. **图片Logo水印的添加**: - 首先,加载原始图片和Logo图片到Bitmap对象。 - 创建一个新的Bitmap对象,通常比原始图片稍大,以便容纳水印,使用Bitmap.createBitmap()方法...

    实现图片加文字水印效果

    在IT行业中,为图片添加文字水印是一种常见的图像处理技术,主要目的是保护版权、标识出处或者传达特定信息。实现这一效果通常涉及到图像处理库的使用,例如Python中的PIL(Python Imaging Library)或OpenCV等。...

    swift-ZZImageAddWatermark图片添加文字水印图片水印自定义二维码生成水印

    在实际应用中,你需要将这些水印层(文字或图片)添加到原图的CALayer上,然后合并成新的图片。ZZImageAddWatermark库可能已经封装了这些步骤,让你能够更方便地进行操作。 总的来说,ZZImageAddWatermark是一个...

    C#添加文字水印,图片水印,程序实例源代码

    1. 加载图像:使用Image类的FromFile方法加载要添加水印的图片。 2. 创建Graphics对象:使用Graphics.FromImage方法从加载的图像创建Graphics对象,这将用于在图像上绘制。 3. 设置文本属性:通过Font类设置字体、...

    给图片添加文字或图片水印C#代码

    C#代码给图片添加文字或图片水印

    winfrom给图片批量添加文字或图片水印

    在本文中,我们将深入探讨如何使用WinForms来实现一个功能,即批量为图片添加文字或图片水印。这是一项实用的技术,特别是在版权保护、品牌宣传或者数据可视化等方面,我们常常需要在图片上添加独特的标识以表明...

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

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

    java实现图片上传并添加水印效果(文字水印,蒙版,logo图片),自动进行文字大小行数位置匹配 ,文字自动换行

    在Java编程中,实现图片上传并添加水印效果是一项常见的任务,这通常涉及到图像处理、图形用户界面(GUI)和文件I/O等多个方面。在这个项目中,我们将关注以下几个关键知识点: 1. **Java图像处理库**:Java标准库...

    springboot实现上传图片添加水印

    接下来,我们需要处理图片添加水印的逻辑。这个过程通常包括读取图片,生成水印(可以是文本或图像),然后将水印合并到原始图片上。在Java中,我们可以使用Java Advanced Imaging (JAI)库或者更现代的ImageMagick的...

    C# 批量加水印(含文字水印以及图片水印).rar

    水印是图像处理中的一个术语,指的是在原始图像上添加半透明的或部分透明的图案、文字或图像,以达到保护版权、防止盗用的目的。在C#中,我们可以利用GDI+(Graphics Device Interface Plus)库来处理图像并添加水印...

    上传图片加水印(图片水印和文字水印)

    在标题“上传图片加水印(图片水印和文字水印)”中,我们讨论的核心是如何在用户上传图片时自动添加水印。描述指出这涉及一个后台设置功能,允许管理员自定义水印的样式,这意味着系统具有一定的灵活性和可配置性。...

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

    在IT行业中,为图片添加水印是一项常见的任务,特别是在版权保护、品牌推广或者社交媒体分享时。"给图片加水印 批量给图片加水印"这个主题涉及到图像处理技术,特别是批量处理方面,这对于摄影师、设计师或者内容...

Global site tag (gtag.js) - Google Analytics