做小程序的同事让给做个水印图片的接口,以前没做过,百度了下,还挺多,不过做出来的要么图片不透明,要么水印透明度没法控制。改了半天终于做好了,下面上代码:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public String makewatermark(String mark){
Font font=new Font("微软雅黑", Font.PLAIN, 22);
Integer width=300;
Integer height=300;
BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_BGR);
Graphics2D g2d = image.createGraphics();
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d = image.createGraphics();
g2d.setColor(Color.LIGHT_GRAY);
g2d.rotate(Math.toRadians(-35), (double) image.getWidth() / 2, (double) image.getHeight() / 2);
g2d.setFont(font);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));
FontMetrics fm = g2d.getFontMetrics(font);
int markWidth = fm.stringWidth(mark);
int widthX = (width - markWidth) / 2;
g2d.drawString(mark,widthX,100);
g2d.dispose();
String base64 = null;
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(image, "png", stream);
base64 = Base64.encode(stream.toByteArray());
stream.flush();
stream.close();
}catch (IOException e){
e.printStackTrace();
return base64;
得到base64字符串后,再浏览器地址栏输入data:image/png;base64,${imagebase64}
(${imagebase64}是得到的base64字符串)查看效果如下:
这样看不出效果来,把它放到其它图片上是这样的:
下面是alpha=0.1f
和alpha=1.0f
的对比效果:
给小程序拿去平铺就好了。
我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava BufferedImage 图片背景透明处理科普
在处理图像时,有时我们需要将某些部分的背景设置为透明,以便在其他图像上叠加或创建更复杂的效果。在Java中,使用Buffered...
File f = new File("D:\tag\20141204\chengxu\business-dossier\business-dossier-web\src\main\webapp\upload\2017-08-07\C7A23630C2700001FCD951071A601214.ico");
ICOFile ico = new ICOFile(f.toURL()
ImageObserver : http://www.apihome.cn/api/java/ImageObserver.html
BufferedImage:http://www.apihome.cn/api/java/BufferedImage.html
Graphics2D:http://www.apihome.cn/api/java/Graphics2D.html
类结构java.lang.Object
|____ java.awt.Image
|____ java.awt.image.BufferedImagejava.lang.Object
|____ java.awt.Graphics
|____ java.awt.Graphics2DAPI链接BufferedImage
public static InputStream graphicsPoster(List<List<SetCharactersColVO>> rows) throws IOException {
final int w = 200;
final int h = 200;
final int size = rows.size();
//计算高度
final int max =..
* @param originFile 待处理图片
* @param outFile 输出图片
* @param x 输出图片的x坐标
* @param y 输出图片的y坐标
* @param width 输出图片的宽.
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
m0_59151154:
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
万里石塘:
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
万里石塘:
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
散人KK:
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
PaytonYang:
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
【定时将hbase的索引同步到solr的core,当同步失败时,回滚core】好记性不如烂笔头,我将工作中写的自动化脚本记录在此,供大家参考
【centos7上装向日葵linux命令行版(先把结果交代在这:ssh远控功能收费。最后一步当我在向日葵使用ssh远程centos7时,发现它是收费的,我离完整体验就差9块钱)】
【定时将hbase的索引同步到solr的core,当同步失败时,回滚core】好记性不如烂笔头,我将工作中写的自动化脚本记录在此,供大家参考