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#结合WPF为图片添加水印提供了一种强大而灵活的方法,无论是图片还是文字水印,都可以轻松实现。通过创建DEMO并运行代码,你可以进一步熟悉这个过程,并将其应用到自己的项目中。
C# 给图片加上文字或图片水印,通过使用GDI+ 给图片上加水印。实现了透明文字与透明图片水印。可设置水印位置。
总的来说,这个WinForm应用提供了一个方便的工具,可以对图片进行多种操作,如加水印(文字和图片)、等比例缩放和压缩,这对于日常需要处理图片的工作非常实用。通过理解并应用GDI+的图形处理技术,开发者可以...
在Java编程环境中,给图片添加文字或图片水印是一项常见的图像处理任务,广泛应用于版权保护、品牌宣传等领域。本项目“基于Java给图片添加文字或图片水印”旨在教授如何利用Java实现这一功能,适用于大学生的课程...
在Java编程中,给图片添加水印是一项常见的需求,无论是为了版权保护还是视觉美化。水印可以是图片形式,也可以是文字形式。本教程将详细讲解如何使用Java来实现这一功能,重点在于介绍所需的依赖包。 首先,我们...
在Java编程语言中,给图片添加水印是一项常见的任务,特别是在网站开发中,为了保护版权或者标识来源,经常需要在用户上传的图片上添加特定的文字或图像水印。以下将详细讲解如何使用Java来实现这一功能。 首先,...
解决图片的批量处理大小,批量给图片加图片水印,加文字水印
这些工具为我们添加水印提供了基础。 1. **图片Logo水印的添加**: - 首先,加载原始图片和Logo图片到Bitmap对象。 - 创建一个新的Bitmap对象,通常比原始图片稍大,以便容纳水印,使用Bitmap.createBitmap()方法...
1. 加载图像:使用Image类的FromFile方法加载要添加水印的图片。 2. 创建Graphics对象:使用Graphics.FromImage方法从加载的图像创建Graphics对象,这将用于在图像上绘制。 3. 设置文本属性:通过Font类设置字体、...
在实际应用中,你需要将这些水印层(文字或图片)添加到原图的CALayer上,然后合并成新的图片。ZZImageAddWatermark库可能已经封装了这些步骤,让你能够更方便地进行操作。 总的来说,ZZImageAddWatermark是一个...
C#代码给图片添加文字或图片水印
在本文中,我们将深入探讨如何使用WinForms来实现一个功能,即批量为图片添加文字或图片水印。这是一项实用的技术,特别是在版权保护、品牌宣传或者数据可视化等方面,我们常常需要在图片上添加独特的标识以表明...
在Java编程中,实现图片上传并添加水印效果是一项常见的任务,这通常涉及到图像处理、图形用户界面(GUI)和文件I/O等多个方面。在这个项目中,我们将关注以下几个关键知识点: 1. **Java图像处理库**:Java标准库...
在IT行业中,为图片添加文字水印是一种常见的图像处理技术,主要目的是保护版权、标识出处或者传达特定信息。实现这一效果通常涉及到图像处理库的使用,例如Python中的PIL(Python Imaging Library)或OpenCV等。...
水印是图像处理中的一个术语,指的是在原始图像上添加半透明的或部分透明的图案、文字或图像,以达到保护版权、防止盗用的目的。在C#中,我们可以利用GDI+(Graphics Device Interface Plus)库来处理图像并添加水印...
### Delphi 实现给图片添加水印:使用 ImageEn 控件 #### 背景介绍 在 Delphi 开发环境中,实现对图像处理的需求时,经常会遇到需要为图片添加水印的情况。添加水印不仅可以保护图片版权,还能提高品牌识别度。本文...
接下来,我们需要处理图片添加水印的逻辑。这个过程通常包括读取图片,生成水印(可以是文本或图像),然后将水印合并到原始图片上。在Java中,我们可以使用Java Advanced Imaging (JAI)库或者更现代的ImageMagick的...
在标题“上传图片加水印(图片水印和文字水印)”中,我们讨论的核心是如何在用户上传图片时自动添加水印。描述指出这涉及一个后台设置功能,允许管理员自定义水印的样式,这意味着系统具有一定的灵活性和可配置性。...
在IT行业中,为图片添加水印是一项常见的任务,特别是在版权保护、品牌推广或者社交媒体分享时。"给图片加水印 批量给图片加水印"这个主题涉及到图像处理技术,特别是批量处理方面,这对于摄影师、设计师或者内容...