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# 给图片加上文字或图片水印,通过使用GDI+ 给图片上加水印。实现了透明文字与透明图片水印。可设置水印位置。
自己开发的处理图片 压缩 等比例缩放 加水印文字 加水印图片 自定义加水印的位置。很不错的哦,需要本机有.net framework4.0环境支持。平时有时候需要用到图片的处理这个就不错。
JAVA实现给图片增加图片水印或者文字水印相关依赖包。
基于Java给图片添加文字或图片水印 大学生课程设计 基于Java的课程设计 自己大二写的课程设计
java给图片添加水印,网站开发过程中可能需要对上传的图片添加属于本网站的水印,这是一个工具类,能实现添加文字水印和添加图片水印。
解决图片的批量处理大小,批量给图片加图片水印,加文字水印
1、在网上查看了很多 资料,一般合成图片的方法,有两种;这种要简单、灵活些; 2、做成一哥demo,供学习参考;
C#代码给图片添加文字或图片水印
winfrom给图片批量添加文字或图片水印。
springboot实现上传图片添加水印
在线图片加水印,canvas加水印,在线给图片加水印、照片上添加文字,通过前端canvas给你的证件加上水印,防止证件被盗。 演示地址:http://watermark.dxcweb.com/
C# 为图片添加水印文字 一个DEMO。
不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y...
使用vs2015编辑,可以直接运行查看源代码 文字水印可改变水印大小,水印位置,水印透明。 图片水印可改变水印大小,水印位置,水印透明。 内有直接封装好的类可以直接运行,懒人福利
产生图片水印和图片加水印文字后,用Window图片查看器查看
Android为图片加图片logo水印,可以加文字水印,左上角,右上角,中间,左下角,右下角
Flex_给图片加水印,Flex_给图片加水印。Flex_给图片加水印
java实现图片上传并添加水印效果(文字水印,蒙版,logo图片),自动进行文字大小行数位置匹配,文字自动换行
(20080318_3)用Java给图片添加文字或图像水印 【Java水印.rar】文件大小:108 KB (111,078 字节) 解压后是Java源代码。
JS用层实现为图片添加水印效果JS用层实现为图片添加水印效果JS用层实现为图片添加水印效果JS用层实现为图片添加水印效果JS用层实现为图片添加水印效果JS用层实现为图片添加水印效果JS用层实现为图片添加水印效果JS用...