七牛云的图片处理生成二维码水印

实现在一张图片上生成二维码水印,而且按要求生成不同的编码水印。
用到七牛云的图片处理工具。
这里是官方文档:https://developer.qiniu.com/dora/manual/1316/image-watermarking-processing-watermark
下面只是详细解释一下各个结构的意思与作用,注意不能有空格,还要注意大部分需要转成base64格式的。

#这里是图片所在域名,图片需存储在七牛云上
#具体怎么存,看七牛云的文档,我自己没有七牛云,下面这个域名是公司的,所以打码了,哈哈。
http://res.xxx.com/xhc/ticket/bg.png?
#这里声明水印,/后的是类型,1是图片,2是文字,3是混合(又有图片又有文字)
watermark/3
#这里是图片,/image/后面直接是图片url转成base64格式的字符串结果
/image/aHR0cDovL3FyLmxpYW50dS5jb20vYXBpLnBocD90ZXh0PTIyMjI=
#这里是透明度,100为不透明
/dissolve/100
#这里是图片位置,有9个位置可放,如下
# NorthWest     |     North      |     NorthEast
#               |                |    
#               |                |    
# --------------+----------------+--------------
#               |                |    
# West          |     Center     |          East 
#               |                |    
# --------------+----------------+--------------
#               |                |    
#               |                |    
# SouthWest     |     South      |     SouthEast
/gravity/NorthEast
#这里是横向和纵向的距离,单位是px,定位后可以通过调整距离来调整位置
/dx/75
/dy/150
#这里是水印图片的缩放,0-1,0.5表示缩小50%
/ws/0.3
#水印图片自适应原图的类型,取值0、1、2、3分别表示为自适应原图的短边、长边、宽、高,默认值为0
/wst/0
#这里是文字水印,/text/后面是文字直接转base64后的结果
/text/5Ye65Ye65biu54Gr6L2m5aWH5aaZ5LiW55WM
#这里是字体,支持的字体可以查看官方的文档,当然,也是base64转码的
#https://developer.qiniu.com/dora/kb/1379/image-and-video-text-watermarking-support-font-list
#另外还需要注意的是有一些字体比较特殊,转换成base64的结果会带有加号+、斜杠/
#这个时候需要将字符串中的加号+换成中划线-,斜杠/换成下划线_,这样就行了。
/font/6buR5L2T
#这里是字体大小
/fontsize/1200/
#水印文字颜色,RGB格式,可以是颜色名称(例如 red)或十六进制(例如 #FF0000),默认为黑色。经过URL安全的Base64编码。
fill/d2hpdGU=
#这下面跟上面图片水印的是一样的
/dissolve/100
/gravity/NorthWest
/dx/100/dy/180

/text/5oqi5YWI5L2T6aqM56Wo/font/6buR5L2T/fontsize/1200/fill/d2hpdGU=/dissolve/100/gravity/NorthWest/dx/220/dy/250

/text/56Wo56CBOjEwMTA1NDE2NTY1NjU2/font/6buR5L2T/fontsize/550/fill/d2hpdGU=/dissolve/100/gravity/SouthEast/dx/50/dy/170

/text/5pe26Ze0OiAyMDE4LTAxLTE2IDA5OjAwLTEwOjAw/font/6buR5L2T/fontsize/1150/fill/d2hpdGU=/dissolve/100/gravity/South/dx/0/dy/60

这里是用编程的方法使用,是官方的教程,链接:https://segmentfault.com/q/1010000015168823/a-1020000015189635

@Test
public void testGetQiniuRequest() {
    String imageDownloadHost = 
    "http://p4lhvzm2z.bkt.clouddn.com/d9a7824ee04e4b5984328a55cfeacbc9.jpg";
    String waterImgUri = "https://olhvkds73.qnssl.com/logo.png";
    String param = "watermark/1/image/" + UrlSafeBase64.encodeToString(waterImgUri)
            + "/dissolve/100/gravity/NorthEast/dx/10/dy/10";
    String requestUrl = imageDownloadHost + "?" + param;
    HttpGet httpGet = new HttpGet(requestUrl);
    httpGet.setHeader("Host", "http://p4lhvzm2z.bkt.clouddn.com/");
    CloseableHttpResponse response = null;

    String content = null;
    try {
        response = httpClient.execute(httpGet);
        content = EntityUtils.toString(response.getEntity());
    } catch (ParseException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (response != null) {
            try {
                response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    System.out.println("\n\rcontent:<>\n\r" + content);

你可能感兴趣的:(七牛云的图片处理生成二维码水印)