import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class WaterImg {
/** *//**
* 给图片添加水印
*
* @param filePath
* 需要添加水印的图片的路径
* @param markContent
* 水印的文字
* @param markContentColor
* 水印文字的颜色
* @param qualNum
* 图片质量
* @return
*/
public boolean createMark(String filePath, String markContent,
Color markContentColor, float qualNum) {
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
int width = theImg.getWidth(null);
int height = theImg.getHeight(null);
BufferedImage bimage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.createGraphics();
g.setColor(markContentColor);
g.setBackground(Color.white);
g.drawImage(theImg, 0, 0, null);
g.drawString(markContent, width-80, height-80); // 添加水印的文字和设置水印文字出现的内容
g.dispose();
try {
/**
*Encoder是编码器,就是把你画的东东(在内存里是一个Image也是一个OutputStream)按JPEG方式编码,这样你才能存成JPG图片。
*Decoder是解码器,就是把你读进来的JPEG的图片转成一般的Stream
*jdk引入javax.imageio的包之后,上面两个东东就不容易用到了
*/
FileOutputStream out = new FileOutputStream(filePath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//参数
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(qualNum, true);
//
encoder.encode(bimage, param);
out.close();
} catch (Exception e) {
return false;
}
return true;
}
/** *//**
* 把图片印刷到图片上 g.draw
*
* @param pressImg --
* 水印文件
* @param targetImg --
* 目标文件
* @param x
* --x坐标
* @param y
* --y坐标
*/
public final static void pressImage(String targetImg,String pressImg) {
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);
//press水印文件
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) / 2,(height - height_biao) / 2, 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();
}
}
public static void main(String[] args){
WaterImg water=new WaterImg();
//boolean flag=water.createMark("E:/src.jpg","www.test.com",Color.blue,1f);
//System.out.println(flag);
pressImage("E:/press.jpg","E:/target.jpg");
}
}
分享到:
相关推荐
因数据安全,需要将生成的报表xls,添加水印,所以自已在jxl中进行代码修改。 使用例子 public class testJxl { public static void main(String[] args) throws Exception { OutputStream out = new ...
在Java编程中,添加文字或图片水印是一项常见的图像处理任务,主要应用于版权保护、品牌宣传等场景。本文将深入探讨如何使用Java实现这一功能,包括文字水印和图片水印的创建,以及如何调整文字的颜色、大小等属性。...
绝对好使。... public static boolean createMark(String filePath, String watermark) { ImageIcon imgIcon = new ImageIcon(filePath); Image theImg = imgIcon.getImage(); 继续? 下载吧。
因数据安全,需要将生成的报表xls,添加水印,所以自已在jxl中进行代码修改。 使用例子 public class testJxl { public static void main(String[] args) throws Exception { OutputStream out = new ...
以上代码展示了如何在Java中实现为图片添加水印的功能。通过导入必要的包、定义类和方法、加载图像、创建图像缓冲区、添加水印以及输出带水印的图像等步骤,我们能够有效地完成这一任务。这些知识点对于从事图像处理...
### 水印代码知识点详解 ...通过以上分析,我们可以看到提供的Java代码实现了两种类型的水印添加功能——图像水印和文本水印,并详细介绍了其实现细节和关键API的使用。这对于理解和实现自己的水印功能非常有帮助。
Spire.Xls 3.8.6 破解版 只适用于通过xls公式导出图片去水印。绝对能用 导出的图片绝对去水印。注意:只适合 导出图像时候去水印。代码示例: ... imgs.Save(string.Format("XXX.png"), ImageFormat.Png);
Java图片叠加效果是指在Java中实现图片的叠加,叠加的图片可以是水印、Logo、文字等元素。通过Java代码可以实现图片的叠加,生成新的图片。在Java中,图片叠加可以使用Java的图形类库,例如Java.awt和Java.imageio来...
Jmagick 是一个 Java 接口,用于 ImageMagick 图形库,它提供了一系列强大的功能,包括图片缩放、翻转、添加水印等复杂的图形处理操作。这些功能在很多应用中都非常有用,例如在 Web 应用程序中优化用户上传的图片...
总之,**Spire.Pdf.jar** 是一个强大且全面的PDF处理工具,尤其适用于Java开发环境,提供了一套完整的API来满足各种PDF操作需求,包括PDF到IMG的转换。通过合理的编程,可以轻松地将PDF文档转换为图像,以适应不同的...
`setImg`方法包括了调整图片尺寸、添加水印以及将图片转换为字节数组等操作,以便存储到数据库或者文件系统中: ```java private void setImg(File f) throws Exception { // ... 缩放和处理图片的代码 ... } ``` ...
IText是Aditya Birla Software Ltd开发的一款Java库,其主要功能包括创建PDF文档、填充PDF表单、数字签名以及添加水印等。IText库支持多种操作系统和编程语言,如Java、C#和.NET。通过IText,开发者可以轻松地进行...
例如,你可以用它来创建缩略图、添加水印、调整图像质量等。 总结,Golang的图像编码器是其标准库的一部分,提供了一套简洁而强大的API,支持多种图像格式的编码和解码。开发者可以根据需求轻松地集成图像处理功能...