JAVA 通过URL生成水印图

@Override
public OutputStream watermark1(String ossURL, String logoOsskey, HttpServletResponse response) {
lock.lock();
OutputStream os = null;
InputStream imageStream=null;
//水印
String logoPath = ossService.getOssURL(logoOsskey,bucket);
//原图ossURL
try {
os=response.getOutputStream();
imageStream = getImageStream(ossURL);
Image image2 = ImageIO.read(imageStream);

//获取原图信息
int width = image2.getWidth(null);
int height = image2.getHeight(null);

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image2, 0, 0, width, height, null);

// //设置多个图片水印
InputStream logo = getImageStream(logoPath);
Image imageLogo = ImageIO.read(logo);

int logoWidth = imageLogo.getWidth(null);
int logoHeight = imageLogo.getHeight(null);
//设置透明度,ALPHA为接口中自定义的值透明度 0.3F
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, ALPHA));

//完成图片旋转30
g.rotate(Math.toRadians(0), bufferedImage.getWidth() / 2, bufferedImage.getHeight() / 2);

int x = -width / 2;
int y = -height / 2;
while (x < width * 1.5) {
y = -height / 2;
while (y < height * 1.5) {

g.drawImage(imageLogo, x, y, null);
y += logoHeight + 200;
}
x += logoHeight + 300;
}
g.dispose();
Thumbnails.Builder thumbnail = Thumbnails.of(bufferedImage);
thumbnail.size(x,y);
ImageIO.write(thumbnail.asBufferedImage(),"png",os);
//JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os);
//en.encode(bufferedImage);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(imageStream!=null){
try {
imageStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
lock.unlock();
return os;
}

猜你喜欢

转载自www.cnblogs.com/yyhhblog/p/11282404.html