import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public final class ImageUtils {
public ImageUtils() {
}
/**
* 把图片印刷到图片上
*
* @param pressImg --
* 水印文件
* @param targetImg --
* 目标文件
* @param x
* @param y
*/
public final static void pressImage(String pressImg, String targetImg,
int x, int y) {
try {
File _file = new File(targetImg);
Image src = ImageIO.read(_file);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(wideth, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
// 水印文件
File _filebiao = new File(pressImg);
Image src_biao = ImageIO.read(_filebiao);
int wideth_biao = src_biao.getWidth(null);
int height_biao = src_biao.getHeight(null);
g.drawImage(src_biao, wideth - wideth_biao - x, height
- height_biao - y, wideth_biao, height_biao, null);
// /
g.dispose();
FileOutputStream out = new FileOutputStream(targetImg);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 打印文字水印图片
*
* @param pressText
* --文字
* @param targetImg --
* 目标图片
* @param fontName --
* 字体名
* @param fontStyle --
* 字体样式
* @param color --
* 字体颜色
* @param fontSize --
* 字体大小
* @param x --
* 偏移量
* @param y
*/
public static void pressText(String pressText, String targetImg,
String fontName, int fontStyle, int color, int fontSize, int x,
int y) {
try {
File _file = new File(targetImg);
Image src = ImageIO.read(_file);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(wideth, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
// String s="www.143zh.com";
g.setColor(Color.RED);
g.setFont(new Font(fontName, fontStyle, fontSize));
g.drawString(pressText, wideth - fontSize - x, height - fontSize
/ 2 - y);
g.dispose();
FileOutputStream out = new FileOutputStream(targetImg);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) {
pressImage("pressImg.jpg", "targetImg.jpg", 20, 20);
}
}
分享到:
相关推荐
在Java编程语言中,给图片添加水印是一项常见的任务,特别是在网站开发中,为了保护版权或者标识来源,经常需要在用户上传的图片上添加特定的文字或图像水印。以下将详细讲解如何使用Java来实现这一功能。 首先,...
java 图片添加水印 图片叠加文字类 图片生成方法,如果需要在已有的图片叠加文字
在Java编程领域,图片处理是一项常见的任务,包括添加水印、改变图片大小等。这里我们将深入探讨这些知识点,以及如何在Struts2框架下实现它们。 首先,让我们了解"图片水印"。水印通常用于保护版权或者为图片增加...
10. **安全考虑**:在接收用户上传的文件时,应验证文件类型和大小,防止恶意文件上传,同时对生成的水印图片进行权限控制,避免非法访问。 通过以上这些知识点的结合运用,我们可以构建一个功能完善的Java应用,...
开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我
在Spring Boot框架中实现图片上传并添加水印的功能,是一个常见的需求,特别是在开发涉及多媒体内容的Web应用时。下面将详细介绍这个过程,并涵盖相关的技术点。 首先,我们需要了解Spring Boot如何处理文件上传。...
在Java编程环境中,批量上传加水印是一项常见的需求,尤其在图像处理或版权保护的场景中。本项目手工实现了这一功能,提供了不依赖第三方库的解决方案。以下将详细阐述实现这个功能所需的关键知识点。 首先,我们...
java代码上传文件时加水印: 内有jar包的说明文件 图片加水印:TestWaterPrint.java WORD文档加水印:AddWatermarkUtil.java PDF加水印:TestWaterPrint.java Excel加水印:ExcelWaterRemarkUtils.java
综上所述,实现“上传预览文字水印图片水印”功能,需要结合前端的文件操作API、预览展示技术,后端的文件接收、处理和存储,以及可能的SSH远程操作。每个环节都涉及多方面的技术和安全考虑,确保了用户上传文件的...
七牛云上传图片实现添加水印java代码测试类注意事项要先获取七牛的ak,sk以及空间水印样式
在编程实现中,可以通过图像处理库如Python的PIL (Pillow) 或Java的ImageMagick来读取原图,然后将水印图片以适当的位置和透明度叠加上去。 2. **文字水印**:文字水印则是直接在图片上写入文本,如"版权所有"或"未...
本篇文章将详细介绍这两种上传方式以及如何在OSS上传中添加水印。 首先,我们来看本地上传。本地上传是指用户在设备上选择文件后,直接将文件发送到服务器的过程。实现本地上传的关键在于前端的文件选择控件和后端...
java 可以处理19.5 M以下的正常图片 , 不知道大图怎么处理 只能ps 了, jdk可能不行
对于Oracle数据库,虽然存储大量图片在数据库中不是最佳实践,但有时出于业务需求或统一管理考虑,可能会选择这种方式。Oracle支持BLOB(Binary Large Object)数据类型来存储二进制数据,如图片。Java可以使用JDBC ...
在此,我们将深入探讨图片上传、文件上传以及如何在上传的图片上添加文字或图片水印的技术细节。 首先,我们来看图片上传。在前端,这通常涉及到HTML5的`<input type="file">`元素,用户可以通过它选择本地的图片...
在Java编程环境中,图片压缩和加水印是两个常见的图像处理任务。这些功能在很多应用场景中都很重要,比如网站图片上传、社交媒体分享、数字资产管理等。下面将详细讲解这两个知识点,以及如何使用Java来实现。 首先...
java 写批量添加水印软件附批量截剪水印功能
该工具类支持图片文件上传功能,自定义文字水印位置与旋转角度,自定义文字大小,也可根据图片大小进行文字自适应!
这段代码首先加载了名为`input.gif`的GIF文件,然后遍历每一帧并使用`createWatermarkImage`方法生成水印图片。该方法创建一个包含文字的BufferedImage,并应用透明度和字体样式。最后,水印被添加到每一帧的指定...
通过它,你可以轻松地在Java程序中执行如调整图片尺寸、添加水印、转换图片格式等操作。 7. **异常处理与反馈**: 在处理图片上传时,需要考虑各种可能出现的异常,如文件类型错误、文件过大、磁盘空间不足等,并...