最近项目在做一个商城项目
项目上的图片要添加水印①
添加图片水印;②:添加文字水印;一下提供下个方法
希望大家可以用得着
复制代码 代码如下:
package com
blogs
image;
import java
awt
AlphaComposite;
import java
awt
Color;
import java
awt
Font;
import java
awt
Graphics
D;
import java
awt
Image;
import java
awt
RenderingHints;
import java
awt
image
BufferedImage;
import java
io
File;
import java
io
FileOutputStream;
import java
io
InputStream;
import java
io
OutputStream;
import javax
imageio
ImageIO;
import javax
swing
ImageIcon;
/**
* 图片水印
*/
public class ImageUtil {
/**
* @param args
*/
public static void main(String[] args) {
String srcImgPath = "e:/
png";
String iconPath = "e:logo
jpg";
String targerPath = "e:/
jpg";
// 给图片添加水印
ImageUtil
waterMarkImageByIcon(iconPath
srcImgPath
targerPath
f);
// 给图片添加水印
水印旋转
// ImageMarkLogoByIcon
markImageByIcon(iconPath
srcImgPath
// targerPath
);
}
/**
* 给图片添加水印
可设置水印图片旋转角度
*
* @param iconPath
* 水印图片路径
* @param srcImgPath
* 源图片路径
* @param targerPath
* 目标图片路径
* @param degree
* 水印图片旋转角度
* @param width
* 宽度(与左相比)
* @param height
* 高度(与顶相比)
* @param clarity
* 透明度(小于
的数)越接近
越透明
*/
public static void waterMarkImageByIcon(String iconPath
String srcImgPath
String targerPath
Integer degree
Integer width
Integer height
float clarity) {
OutputStream os = null;
try {
Image srcImg = ImageIO
read(new File(srcImgPath));
System
out
println("width:" + srcImg
getWidth(null));
System
out
println("height:" + srcImg
getHeight(null));
BufferedImage buffImg = new BufferedImage(srcImg
getWidth(null)
srcImg
getHeight(null)
BufferedImage
TYPE_INT_RGB);
// 得到画笔对象
// Graphics g= buffImg
getGraphics();
Graphics
D g = buffImg
createGraphics();
// 设置对线段的锯齿状边缘处理
g
setRenderingHint(RenderingHints
KEY_INTERPOLATION
RenderingHints
VALUE_INTERPOLATION_BILINEAR);
g
drawImage(
srcImg
getScaledInstance(srcImg
getWidth(null)
srcImg
getHeight(null)
Image
SCALE_SMOOTH)
null);
if (null != degree) {
// 设置水印旋转
g
rotate(Math
toRadians(degree)
(double) buffImg
getWidth() /
(double) buffImg
getHeight() /
);
}
// 水印图象的路径 水印一般为gif或者png的
这样可设置透明度
ImageIcon imgIcon = new ImageIcon(iconPath);
// 得到Image对象
Image img = imgIcon
getImage();
float alpha = clarity; // 透明度
g
setComposite(AlphaComposite
getInstance(AlphaComposite
SRC_ATOP
alpha));
// 表示水印图片的位置
g
drawImage(img
width
height
null);
g
setComposite(AlphaComposite
getInstance(AlphaComposite
SRC_OVER));
g
dispose();
os = new FileOutputStream(targerPath);
// 生成图片
ImageIO
write(buffImg
"JPG"
os);
System
out
println("添加水印图片完成!");
} catch (Exception e) {
e
printStackTrace();
} finally {
try {
if (null != os)
os
close();
} catch (Exception e) {
e
printStackTrace();
}
}
}
/**
* 给图片添加水印
可设置水印图片旋转角度
*
* @param logoText
* 水印文字
* @param srcImgPath
* 源图片路径
* @param targerPath
* 目标图片路径
* @param degree
* 水印图片旋转角度
* @param width
* 宽度(与左相比)
* @param height
* 高度(与顶相比)
* @param clarity
* 透明度(小于
的数)越接近
越透明
*/
public static void waterMarkByText(String logoText
String srcImgPath
String targerPath
Integer degree
Integer width
Integer height
Float clarity) {
// 主图片的路径
InputStream is = null;
OutputStream os = null;
try {
Image srcImg = ImageIO
read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg
getWidth(null)
srcImg
getHeight(null)
BufferedImage
TYPE_INT_RGB);
// 得到画笔对象
// Graphics g= buffImg
getGraphics();
Graphics
D g = buffImg
createGraphics();
// 设置对线段的锯齿状边缘处理
g
setRenderingHint(RenderingHints
KEY_INTERPOLATION
RenderingHints
VALUE_INTERPOLATION_BILINEAR);
g
drawImage(
srcImg
getScaledInstance(srcImg
getWidth(null)
srcImg
getHeight(null)
Image
SCALE_SMOOTH)
null);
if (null != degree) {
// 设置水印旋转
g
rotate(Math
toRadians(degree)
(double) buffImg
getWidth() /
(double) buffImg
getHeight() /
);
}
// 设置颜色
g
setColor(Color
red);
// 设置 Font
g
setFont(new Font("宋体"
Font
BOLD
));
float alpha = clarity;
g
setComposite(AlphaComposite
getInstance(AlphaComposite
SRC_ATOP
alpha));
// 第一参数
>设置的内容
后面两个参数
>文字在图片上的坐标位置(x
y)
g
drawString(logoText
width
height);
g
dispose();
os = new FileOutputStream(targerPath);
// 生成图片
ImageIO
write(buffImg
"JPG"
os);
System
out
println("添加水印文字完成!");
} catch (Exception e) {
e
printStackTrace();
} finally {
try {
if (null != is)
is
close();
} catch (Exception e) {
e
printStackTrace();
}
try {
if (null != os)
os
close();
} catch (Exception e) {
e
printStackTrace();
}
}
}
}
还有一个图片缩放代码:
复制代码 代码如下:
/**
* 图片缩放(图片等比例缩放为指定大小空白部分以白色填充)
*
* @param srcPath
* 源图片路径
* @param destPath
* 缩放后图片路径
*/
public static void zoomImage(String srcPath String destPath int destHeight int destWidth) {
try {
BufferedImage srcBufferedImage = ImageIOread(new File(srcPath));
int imgWidth = destWidth;
int imgHeight = destHeight;
int srcWidth = srcBufferedImagegetWidth();
int srcHeight = srcBufferedImagegetHeight();
if (srcHeight >= srcWidth) {
imgWidth = (int) Mathround(((destHeight * / srcHeight) * srcWidth));
} else {
imgHeight = (int) Mathround(((destWidth * / srcWidth) * srcHeight));
}
BufferedImage destBufferedImage = new BufferedImage(destWidth destHeight BufferedImageTYPE_INT_RGB);
GraphicsD graphicsD = destBufferedImagecreateGraphics();
graphicsDsetBackground(ColorWHITE);
graphicsDclearRect( destWidth destHeight);
graphicsDdrawImage(srcBufferedImagegetScaledInstance(imgWidth imgHeight ImageSCALE_SMOOTH) (destWidth / ) (imgWidth / ) (destHeight / ) (imgHeight / ) null);
graphicsDdispose();
ImageIOwrite(destBufferedImage "JPEG" new File(destPath));
} catch (IOException e) {
eprintStackTrace();
}
}