七牛云 存储图片的时候想要添加图片水印如何做?

新手上路,请多包涵

1.按照其官方文档图片水印处理
2.这个是我的代码

@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);
}

代码执行返回结果一直是:

content:<>
The requested URL '/d9a7824ee04e4b5984328a55cfeacbc9.jpg' was not found on this server.

是不是相应的imageDownloadHost不对导致运行一直这个问题,我应该从哪里取得imageDownloadHost?

总结一下我的疑问:
如果选择使用这个API是不是还需要自己手动对水印图片log根据源图片进行压缩?
如果执行成功原图片会被加上水印还是新生成一个源图片的备份
还请多多指教
PS:所有图片都是保存在七牛云服务器上 代码中的图片地址都是可以访问到的

阅读 4k
1 个回答

【如果选择使用这个API是不是还需要自己手动对水印图片log根据源图片进行压缩】
不需要;长宽不能大于原图
【如果执行成功原图片会被加上水印还是新生成一个源图片的备份】
都可以;
取决于你的设置;是否加force参数
https://developer.qiniu.com/d...

参考下面这个代码

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.processing.OperationManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.qiniu.util.UrlSafeBase64;

public class OperateDemo {

    public static void main(String[] args) throws QiniuException {
        //设置账号的AK,SK
        String ACCESS_KEY = "Access_Key";
        String SECRET_KEY = "Secret_Key";
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        //新建一个OperationManager对象
        OperationManager operater = new OperationManager(auth);
        //设置要转码的空间和key,并且这个key在你空间中存在
        String bucket = "Bucket_Name";
        String key = "Bucket_key";
        //需要添加水印的图片UrlSafeBase64,可以参考http://developer.qiniu.com/code/v6/api/dora-api/av/video-watermark.html
        String pictureurl = UrlSafeBase64.encodeToString("http://developer.qiniu.com/resource/logo-2.jpg");
        //设置转码操作参数
        String fops = "avthumb/mp4/s/640x360/vb/1.25m/wmImage/" + pictureurl;
        //设置转码的队列
        String pipeline = "yourpipelinename";
        //可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间。
        String urlbase64 = UrlSafeBase64.encodeToString("目标Bucket_Name:自定义文件key");
        String pfops = fops + "|saveas/" + urlbase64;
        //设置pipeline参数
        StringMap params = new StringMap().putWhen("force", 1, true).putNotEmpty("pipeline", pipeline);
        try {
            String persistid = operater.pfop(bucket, key, pfops, params);
            //打印返回的persistid
            System.out.println(persistid);
        } catch (QiniuException e) {
            //捕获异常信息
            Response r = e.response;
            // 请求失败时简单状态信息
            System.out.println(r.toString());
            try {
                // 响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                //ignore
            }
        }
    }
}
logo
七牛云问答
子站问答
访问
宣传栏