JAVA图片加水印工具类
参考网上的资源写的图片加水印工具类,支持特定位置加水印和预设位置加水印,支持文字和图片水印,支持水印缩放、水印旋转、图片缩放
1.工具类
public class WaterMaskImgUtils{
/**
* <p>Discription:[水印要缩小多少倍相对于被加水印的图片]</p>
*/
public static double SCALE_OF_WATER_MARK=-1D;
/**
* Created on 2020-8-24
* <p>Discription:[加水印]</p>
* @param sourceImageStream 源图片
* @param watermarkImageStream 水印图片
* @param responseStream 输出
* @param watermarkPosition 水印位置枚举(CENTER中, RIGHT_TOP右上, RIGHT_BOTTOM右下, LEFT_TOP左上, LEFT_BOTTOM左下)
* @param alpha 透明度(0.0 -- 1.0, 0.0为完全透明,1.0为完全不透明)
* @param degree 水印图片旋转角度0-360
* @throws IOException
*/
public static void addWatermark(InputStream sourceImageStream, InputStream watermarkImageStream,OutputStream responseStream,WatermarkPosition watermarkPosition,float alpha, Integer degree) throws IOException{
addWatermark(sourceImageStream, watermarkImageStream, responseStream, watermarkPosition, 0, 0, alpha, degree);
}
/**
* Created on 2020-8-24
* <p>Discription:[加水印]</p>
* @param sourceImageStream 源图片
* @param watermarkImageStream 水印图片
* @param responseStream 输出
* @param x 水印位置x坐标
* @param y 水印位置y坐标
* @param alpha 透明度(0.0 -- 1.0, 0.0为完全透明,1.0为完全不透明)
* @param degree 水印图片旋转角度0-360
* @throws IOException
*/
public static void addWatermark(InputStream sourceImageStream, InputStream watermarkImageStream,OutputStream responseStream,int x, int y, float alpha, Integer degree) throws IOException{
addWatermark(sourceImageStream, watermarkImageStream, responseStream, null,x, y, alpha, degree);
}
/**
* Created on 2020-8-24
* <p>Discription:[加水印]</p>
* @param sourceImageStream 源图片
* @param watermarkText 水印文字
* @param responseStream 输出
* @param watermarkPosition 水印位置枚举(CENTER中, RIGHT_TOP右上, RIGHT_BOTTOM右下, LEFT_TOP左上, LEFT_BOTTOM左下)
* @param alpha 透明度(0.0 -- 1.0, 0.0为完全透明,1.0为完全不透明)
* @param degree 水印图片旋转角度0-360
* @throws IOException
*/
public static void addWatermark(InputStream sourceImageStream, String watermarkText,Font font,Color color,OutputStream responseStream,WatermarkPosition watermarkPosition,float alpha, Integer degree) throws IOException{
addWatermark(sourceImageStream, watermarkText,font, color, responseStream, watermarkPosition, 0, 0, alpha, degree);
}
/**
* Created on 2020-8-24
* <p>Discription:[加水印]</p>
* @param sourceImageStream 源图片
* @param watermarkText 水印文字
* @param responseStream 输出
* @param x 水印位置x坐标
* @param y 水印位置y坐标
* @param alpha 透明度(0.0 -- 1.0, 0.0为完全透明,1.0为完全不透明)
* @param degree 水印图片旋转角度0-360
* @throws IOException
*/
public static void addWatermark(InputStream sourceImageStream,String watermarkText,Font font,Color color,OutputStream responseStream,int x, int y, float alpha, Integer degree) throws IOException{
addWatermark(sourceImageStream, watermarkText,font, color, responseStream, null,x, y, alpha, degree);
}
/**
* Created on 2020-8-31
* <p>Discription:[改变图片大小]</p>
* @param sourceImageStream
* @param width
* @param height
* @return
* @throws IOException
*/
public static ByteArrayInputStream resizeImage(InputStream sourceImageStream, int width,int height) throws IOException{
BufferedImage image = ImageIO.read(sourceImageStream); //源图片
//合成后的图片
BufferedImage bufferedImage = new BufferedImage(width, height, Image.SCALE_SMOOTH);
Graphics2D g = bufferedImage.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_RENDE