- 浏览: 3100867 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手”,它完成水印的功能非常强大,而且也可以批处理,不过Java也可以非常轻松的完成这些事情,但效果也打点折扣,坦诚点说吧,java在图像处理方面确实不如c++,不过这本来就不是java的强项,都可以理解。
利用Java给图片增加水印道理很简单:利用Java在内存中加载一副图片,然后在此基础上加载第二幅图片,而这叠加就成了水印,同时第二幅图片您可以控制图片的透明度。水印文字也一个道理。利用这个道理,你甚至可以做到组合图片等等操作,只有想不到,没有做不到。
代码正在整理最近随后放上去。这里就把算法说一下。
水印图片的方法是:Graphics2D的drawImage(waterImage, x, y, width, height, null);
水印文字的方法是:Graphics2D的drawString(pressText, x, y);
文章地址:http://javapub.iteye.com/blog/711045
相关文章
Java图像图片 边缘检测 http://javapub.iteye.com/blog/685468
Java图像变灰 http://javapub.iteye.com/blog/687082
Java 给图片增加 水印图片 水印文字 [url]Java 给图片增加 水印图片 水印文字[/url]
Java图像渐变 http://javapub.iteye.com/blog/736799
Java将大图片转成小图片 http://javapub.iteye.com/blog/666607
一般来讲是这样的,水印的文字会保存在后台,同时也水印到图片上。前台输入后文字后和后台缓存的文字进行匹配,并不是真正回去提取文字。
不可以了。因为它不像PhotoShop,有一个层的概念。它就是直接在内存中,生成了图片,然后写道硬盘。所以过程是不可逆的。 只能通过其他的方法提取文字。
当然还有一个理论上的方法,就是直接把图片的内存对象,直接写到文件中,下次在反序列化,这样对象就又还原了,就可以提取水印图片和文字了。
因为文字是又长度的。所以这个方法就是为了得到输入文字的长度。
利用Java给图片增加水印道理很简单:利用Java在内存中加载一副图片,然后在此基础上加载第二幅图片,而这叠加就成了水印,同时第二幅图片您可以控制图片的透明度。水印文字也一个道理。利用这个道理,你甚至可以做到组合图片等等操作,只有想不到,没有做不到。
代码正在整理最近随后放上去。这里就把算法说一下。
水印图片的方法是:Graphics2D的drawImage(waterImage, x, y, width, height, null);
水印文字的方法是:Graphics2D的drawString(pressText, x, y);
/** * 添加图片水印 * * @param targetImg * 目标图片路径,如:C:\\kutuku.jpg * @param waterImg * 水印图片路径,如:C:\\kutuku.png * @param x * 水印图片距离目标图片左侧的偏移量,如果x<0, 则在正中间 * @param y * 水印图片距离目标图片上侧的偏移量,如果y<0, 则在正中间 * @param alpha * 透明度(0.0 -- 1.0, 0.0为完全透明,1.0为完全不透明) */ public final static void pressImage(String targetImg, String waterImg, int x, int y, float alpha) { try { // 加载目标图片 File file = new File(targetImg); Image image = ImageIO.read(file); int width = image.getWidth(null); int height = image.getHeight(null); // 将目标图片加载到内存。 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufferedImage.createGraphics(); g.drawImage(image, 0, 0, width, height, null); // 加载水印图片。 Image waterImage = ImageIO.read(new File(waterImg)); int width_1 = waterImage.getWidth(null); int height_1 = waterImage.getHeight(null); // 设置水印图片的透明度。 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 设置水印图片的位置。 int widthDiff = width - width_1; int heightDiff = height - height_1; if (x < 0) { x = widthDiff / 2; } else if (x > widthDiff) { x = widthDiff; } if (y < 0) { y = heightDiff / 2; } else if (y > heightDiff) { y = heightDiff; } // 将水印图片“画”在原有的图片的制定位置。 g.drawImage(waterImage, x, y, width_1, height_1, null); // 关闭画笔。 g.dispose(); // 保存目标图片。 ImageIO.write(bufferedImage, PICTRUE_FORMATE_JPG, file); } catch (IOException e) { e.printStackTrace(); } } /** * 添加文字水印 * * @param targetImg * 目标图片路径,如:C:\\kutoku.jpg * @param pressText * 水印文字, 如:kutuku.com * @param fontName * 字体名称, 如:宋体 * @param fontStyle * 字体样式,如:粗体和斜体(Font.BOLD|Font.ITALIC) * @param fontSize * 字体大小,单位为像素 * @param color * 字体颜色 * @param x * 水印文字距离目标图片左侧的偏移量,如果x<0, 则在正中间 * @param y * 水印文字距离目标图片上侧的偏移量,如果y<0, 则在正中间 * @param alpha * 透明度(0.0 -- 1.0, 0.0为完全透明,1.0为完全不透明) */ public static void pressText(String targetImg, String pressText, String fontName, int fontStyle, int fontSize, Color color, int x, int y, float alpha) { try { // 加载目标图片 File file = new File(targetImg); Image image = ImageIO.read(file); int width = image.getWidth(null); int height = image.getHeight(null); // 将目标图片加载到内存。 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufferedImage.createGraphics(); g.drawImage(image, 0, 0, width, height, null); g.setFont(new Font(fontName, fontStyle, fontSize)); g.setColor(color); // 设置水印图片的透明度。 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 设置水印图片的位置。 int width_1 = fontSize * getLength(pressText); int height_1 = fontSize; int widthDiff = width - width_1; int heightDiff = height - height_1; if (x < 0) { x = widthDiff / 2; } else if (x > widthDiff) { x = widthDiff; } if (y < 0) { y = heightDiff / 2; } else if (y > heightDiff) { y = heightDiff; } // 将水印文字“写”在原有的图片的制定位置。 g.drawString(pressText, x, y + height_1); // 关闭画笔。 g.dispose(); // 保存目标图片。 ImageIO.write(bufferedImage, PICTRUE_FORMATE_JPG, file); } catch (Exception e) { e.printStackTrace(); } }
文章地址:http://javapub.iteye.com/blog/711045
相关文章
Java图像图片 边缘检测 http://javapub.iteye.com/blog/685468
Java图像变灰 http://javapub.iteye.com/blog/687082
Java 给图片增加 水印图片 水印文字 [url]Java 给图片增加 水印图片 水印文字[/url]
Java图像渐变 http://javapub.iteye.com/blog/736799
Java将大图片转成小图片 http://javapub.iteye.com/blog/666607
评论
6 楼
javapub
2011-11-02
chenhaohbu 写道
水印的作用一般就是加密啊防伪啊这样紫。如果不能提取、识别水印信息,那这样加入水印文字和图片就失去意义啦……
一般来讲是这样的,水印的文字会保存在后台,同时也水印到图片上。前台输入后文字后和后台缓存的文字进行匹配,并不是真正回去提取文字。
5 楼
chenhaohbu
2011-10-25
水印的作用一般就是加密啊防伪啊这样紫。如果不能提取、识别水印信息,那这样加入水印文字和图片就失去意义啦……
4 楼
javapub
2011-10-24
chenhaohbu 写道
这种简单覆盖的方式确实可以加载水印图片和文字
问题是:加载后还能正常提取水印图片和水印文字吗?如何提取?
希望可以跟楼主交流交流……呵呵
问题是:加载后还能正常提取水印图片和水印文字吗?如何提取?
希望可以跟楼主交流交流……呵呵
不可以了。因为它不像PhotoShop,有一个层的概念。它就是直接在内存中,生成了图片,然后写道硬盘。所以过程是不可逆的。 只能通过其他的方法提取文字。
当然还有一个理论上的方法,就是直接把图片的内存对象,直接写到文件中,下次在反序列化,这样对象就又还原了,就可以提取水印图片和文字了。
3 楼
javapub
2011-10-24
evan0625 写道
您好,你的这句代码
int width_1 = fontSize * getLength(pressText);
中的getLength是如何得到的?谢谢
int width_1 = fontSize * getLength(pressText);
中的getLength是如何得到的?谢谢
因为文字是又长度的。所以这个方法就是为了得到输入文字的长度。
2 楼
chenhaohbu
2011-10-22
这种简单覆盖的方式确实可以加载水印图片和文字
问题是:加载后还能正常提取水印图片和水印文字吗?如何提取?
希望可以跟楼主交流交流……呵呵
问题是:加载后还能正常提取水印图片和水印文字吗?如何提取?
希望可以跟楼主交流交流……呵呵
1 楼
evan0625
2011-10-21
您好,你的这句代码
int width_1 = fontSize * getLength(pressText);
中的getLength是如何得到的?谢谢
int width_1 = fontSize * getLength(pressText);
中的getLength是如何得到的?谢谢
发表评论
-
利用JFrame直接显示JFreeChart的图片
2012-06-12 16:38 5244核心代码就是要将一个JFreeChart 对象,写到Buffe ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 2994用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6872jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9792GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11800Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java关于JIT的原理和相关知识
2010-09-13 16:31 7121今天在读java.awt.Toolkit类时,遇到了JIT,代 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6630关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
Swing特效-渐显效果
2010-09-09 16:04 6209能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9477关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2301将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 8985图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2898DirectColorModel 类别是使用像素值的 Colo ... -
Java图像渐变
2010-08-13 16:05 7361图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RB ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12582用Java进行图像处理,会遇到ColorSpace这个类:Co ... -
Java图像图片 边缘检测
2010-06-06 20:54 19735对图片进行边缘检测在很多领域是非常重要的,例如:车牌号码的识别 ... -
Java 图像钝化与锐化
2010-06-05 02:08 10221Java图像的钝化和锐化就是一个算法的问题,说白了就是两个方法 ... -
Java图片变亮 变暗
2010-06-05 01:42 4594Java在图片处理领域的功 ... -
Java加载图片 利用Image与BufferedImage
2010-06-04 13:14 50322Image是一个抽象列,BufferedImage是Image ... -
Swing显示图片
2010-06-02 17:48 32396Swing显示图片可以有很多的种选择,例如:可以用JLabel ... -
Java将大图片转成小图片
2010-05-14 16:46 7795我们经常会将一个小的图片变成小一些的图片,利用java可以方便 ...
相关推荐
JAVA实现给图片增加图片水印或者文字水印相关依赖包。
java给图片添加水印,网站开发过程中可能需要对上传的图片添加属于本网站的水印,这是一个工具类,能实现添加文字水印和添加图片水印。
基于Java给图片添加文字或图片水印 大学生课程设计 基于Java的课程设计 自己大二写的课程设计
Java为图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->...
JAVA处理图片 加文字水印以及灰色透明背景,处理图片。
JAVA实现给图片增加图片水印或者文字水印,上手度好,二次开发性好
水印 java Graphics2D实现文字图片水印 实现水印四个角水印
利用java将图片加上水印 只需要设置图片属性就行了·
利用java的Graphics2D进行图片的水印处理
java实现图片上传并添加水印效果(文字水印,蒙版,logo图片),自动进行文字大小行数位置匹配,文字自动换行
java 图片添加水印 图片叠加文字类 图片生成方法,如果需要在已有的图片叠加文字
java 水印(水印适应图片大小,但个别图片太小不支持)
Java图片附加图片水印和文字水印,以及水印透明度,偏移度设置。
添加文字水印的工具类,自己去下JAR包,MAVEN的网站http://mvnrepository.com/
java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...
(20080318_3)用Java给图片添加文字或图像水印 【Java水印.rar】文件大小:108 KB (111,078 字节) 解压后是Java源代码。
Java实现在图片上添加水印图片和水印文字.docJava实现在图片上添加水印图片和水印文字.docJava实现在图片上添加水印图片和水印文字.docJava实现在图片上添加水印图片和水印文字.doc
包含了一些java对图片操作处理的方法: 1.给图片添加图片水印 2.给图片添加文字水印 3.图片缩放 *主方法测试代码简单易懂
第二种是添加图片水印和文字水印两种方法,水印图片可以是GIF,PNG透明的文件,我一般采用的是PNG的,因为它的质量和GIF相比要高一些; 适用人群:Java开发者 使用场景:版权信息标注 目标:可以直接拿来用
使用itext开发包对pdf文件进行去水印操作,包括删除图片水印和文字水印。通过遍历pdf的contents对象和xobjects对象,进行对象删除,速度快,效率高