- 浏览: 275302 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
java老大爷:
技术扶持 技术交流 汇聚程序员精英 群里有马士兵2017 ...
大数据数据 -
yeruowei:
遇到同样的问题,特意登录点赞
导入数据库时出现ORA-01435: 用户不存在 -
1017974387:
特意登陆来给你赞。。。。。。
导入数据库时出现ORA-01435: 用户不存在 -
sgy1103:
您好:看了苯苯熊家庭记帐注册码破解很羡慕。我在用,不过换电脑后 ...
笨笨家庭记账本—破解 -
shellbye:
居然真是这个原因。。。哈哈
maven设置中ERROR: JAVA_HOME is set to an invalid directory
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* @author Eric Xu
*
*/
public final class ImageUtils {
/**
* 图片水印
* @param pressImg 水印图片
* @param targetImg 目标图片
* @param x 修正值 默认在中间
* @param y 修正值 默认在中间
* @param alpha 透明度
*/
public final static void pressImage(String pressImg, String targetImg, int x, int y, float alpha) {
try {
File img = new File(targetImg);
Image src = ImageIO.read(img);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
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);
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();
}
}
/**
* 文字水印
* @param pressText 水印文字
* @param targetImg 目标图片
* @param fontName 字体名称
* @param fontStyle 字体样式
* @param color 字体颜色
* @param fontSize 字体大小
* @param x 修正值
* @param y 修正值
* @param alpha 透明度
*/
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();
}
}
/**
* 缩放
* @param filePath 图片路径
* @param height 高度
* @param width 宽度
* @param bb 比例不对时是否需要补白
*/
public static void resize(String filePath, int height, int width, boolean bb) {
try {
double ratio = 0.0; //缩放比例
File f = new File(filePath);
BufferedImage bi = ImageIO.read(f);
Image itemp = bi.getScaledInstance(width, height, bi.SCALE_SMOOTH);
//计算比例
if ((bi.getHeight() > height) || (bi.getWidth() > width)) {
if (bi.getHeight() > bi.getWidth()) {
ratio = (new Integer(height)).doubleValue() / bi.getHeight();
} else {
ratio = (new Integer(width)).doubleValue() / bi.getWidth();
}
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);
itemp = op.filter(bi, null);
}
if (bb) {
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
if (width == itemp.getWidth(null))
g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2, itemp.getWidth(null), itemp.getHeight(null), Color.white, null);
else
g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0, itemp.getWidth(null), itemp.getHeight(null), Color.white, null);
g.dispose();
itemp = image;
}
ImageIO.write((BufferedImage) itemp, "jpg", f);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
pressImage("G:\\imgtest\\sy.jpg", "G:\\imgtest\\test1.jpg", 0, 0, 0.5f);
pressText("我是文字水印", "G:\\imgtest\\test1.jpg", "黑体", 36, Color.white, 80, 0, 0, 0.3f);
resize("G:\\imgtest\\test1.jpg", 500, 500, true);
}
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;
}
}
发表评论
-
java socket服务器端与其他语言的通讯
2013-05-15 17:20 1020首先说下背景: 项目是一个物资计量系统,大致的1:ja ... -
JAVA多线程实现和应用总结
2012-09-13 08:09 1191最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟 ... -
navicat10.0.* 注册码
2012-09-06 21:17 1057NAVD-IO5R-4VGM-TIZD (试过英文版,有用) ... -
mysql error 1366
2012-09-06 20:56 923出现error1366,是字符集的问题,设置为gbk就好啦, -
Unbound classpath variable: 'M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar' in proje
2012-09-06 09:44 3822在用eclipse管理项目的时候,出现Unbound clas ... -
Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
2012-08-27 13:25 1853java.net.SocketException: Unrec ... -
第三方类库
2012-08-27 09:27 873工程构建的时候应该具备的一些组件 -
weblogic手册
2012-08-14 08:12 1264重启weblogic 1、查看weblogic启动进程(节点1 ... -
iBATIS中statement ID命名冲突
2012-08-14 08:14 1681在用iBaTIS开发软件时,需要写很多sqlmap X ... -
eclips加载
2011-12-22 16:23 902eclips加载 web插件http://download.e ... -
一个struts2+json+jquery的问题
2011-05-18 11:17 1192问题比较简单,但是错乱的神经让我浪费啦一早晨. 1:配置环境 ... -
ibatis数组参数的设置
2011-05-17 22:39 2868<delete id="delete" ... -
自定义类型
2011-05-17 09:09 1169public class JsonNodeType exten ... -
风雨20年:我所积累的20条编程经验
2011-05-15 20:18 806原文作者乔纳森·丹尼 ... -
rmi
2011-05-15 19:54 832RmiMonitorService.java package ... -
ajax + struts2 + xml
2011-05-15 19:36 1083Jquery 发送ajax请求,action 或servlet ... -
http通用请求测试
2011-05-15 17:55 1418晕要发到博客上频道的怎么发到了这里。。。管理员能帮忙移动一下吗 ... -
关于多线程
2011-05-14 22:26 1070多线程和单线程的我个人认为,就是一个顺序的问题,,因为 ... -
注解POJO比不上使用配置文件的地方
2011-05-14 08:55 9511、跨数据库,POJO将无法公用 使用注解方式的POJO,将 ... -
hibernate in
2011-05-08 02:20 1308一个学科表(Field), ...
相关推荐
在C#编程中,添加水印到图片是一项常见的任务,特别是在设计软件或处理图像的应用程序中。本示例主要关注如何使用C#和WPF(Windows Presentation Foundation)技术来实现这个功能,既可以添加图片水印,也可以添加...
在“易语言图片加水印”这个主题中,我们主要探讨如何利用易语言来实现对图片添加水印的功能。水印通常用于保护版权,或者为图像增添个性化的标识。 首先,我们要理解什么是水印。水印是图片处理中的一个常见概念,...
在Spring Boot框架中实现图片上传并添加水印的功能,是一个常见的需求,特别是在开发涉及多媒体内容的Web应用时。下面将详细介绍这个过程,并涵盖相关的技术点。 首先,我们需要了解Spring Boot如何处理文件上传。...
在Java编程语言中,给图片添加水印是一项常见的任务,特别是在网站开发中,为了保护版权或者标识来源,经常需要在用户上传的图片上添加特定的文字或图像水印。以下将详细讲解如何使用Java来实现这一功能。 首先,...
开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我
QT给图片加水印是一种常见的图像处理操作,用于在图片上添加标识或版权信息,防止未经授权的使用。本文将深入探讨如何使用Qt框架实现这一功能,包括必要的编程知识和步骤。 首先,Qt是一个跨平台的应用程序开发框架...
使用PHP,为图片添加水印图片。 缩放源水印图片,使其最大宽/高度不能超过原图片。
在网页上对图片添加水印,通常是为了防止图片被未经授权的用户盗用,或者为了在分享的图片上显示一些特定的信息,如日期、用户标识或公司Logo。 使用HTML2Canvas添加水印的过程分为以下几个步骤: 1. **引入库**:...
### Delphi 实现给图片添加水印:使用 ImageEn 控件 #### 背景介绍 在 Delphi 开发环境中,实现对图像处理的需求时,经常会遇到需要为图片添加水印的情况。添加水印不仅可以保护图片版权,还能提高品牌识别度。本文...
总的来说,这个WinForm应用提供了一个方便的工具,可以对图片进行多种操作,如加水印(文字和图片)、等比例缩放和压缩,这对于日常需要处理图片的工作非常实用。通过理解并应用GDI+的图形处理技术,开发者可以...
VB(Visual Basic)是一种由微软开发的编程环境,它提供了简单易用的图形用户界面(GUI)创建工具和丰富的功能,使得创建给图片加水印的小程序变得容易。下面我们将深入探讨如何使用VB来实现这个功能,以及涉及到的...
通过以上步骤,你就可以在Winform应用中实现一个功能完善的图片加水印工具,包括图片和文字水印,以及透明度和字体调整。这个过程涉及了Windows Forms控件的使用、图像处理和图形绘制,是.NET框架中基础但实用的技能...
Java为图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->...
易优批量图片加水印插件是一款针对易优CMS(EyouCMS)设计的专业插件,主要用于提升网站的用户体验和优化网页加载速度。在互联网环境中,网页加载速度是影响用户体验的关键因素之一,尤其是当页面中包含大量图片时,...
总之,这个“java图片加水印工具类”是一个实用的组件,可以帮助Java开发者轻松地在图片上添加水印,提升工作效率,同时保持代码的整洁和可维护性。无论你是进行个人项目还是企业级应用,它都能成为一个有价值的辅助...
1. **给图片加水印**: 在这个项目中,开发者可能会使用`wx.createSelectorQuery()`来选取Canvas元素,然后通过`canvasContext.drawImage()`方法加载图片并将其绘制到Canvas上。接着,利用`canvasContext....
java 图片添加水印 图片叠加文字类 图片生成方法,如果需要在已有的图片叠加文字
在C#编程中,给图片添加水印是一项常见的...总之,C#提供了一套完整的API来处理图像和水印,使得在程序中实现图片加水印变得简单易行。通过理解并熟练运用上述技术,开发者可以轻松地为自己的项目添加这一实用功能。
"Vb图片加水印组件.rar" 提供了一个实用的技术方案,帮助开发者实现这一功能。该组件使得在图片上叠加图片或文字水印变得简单,通过VB的内置控件Picture1.Picture属性进行操作,并能将处理后的图片保存为新的格式。 ...
【图片加水印小工具绿色版】是一款便捷的软件,专为用户设计,用于在图片上添加水印,以保护版权或进行个性化定制。这款工具因其便携式特性,无需安装即可直接运行,大大简化了用户的操作流程。下面将详细介绍这款...