七牛合成动图

主要看操作步骤图片裁剪另存为为附属项,不需要可以不看。

注意

  1. 动图合成接口目前仅适用于存储在七牛的图片
  2. 接口可支持处理的原图片格式有 jpeg 和 png
  3. 支持的最大帧数为 20
  4. 支持的最大图片尺寸为 1080*1080,必须是多张宽高尺寸相同的图片,文档里没说明
  5. 文件名,拼凑的 key 值必须经过 Base64 编码,多个图片文件拼凑时,不断拼凑/key/<文件名base64Encode >即可

操作步骤

实现效果,将3张图片合成1张 gif 动图。

  1. 素材,准备3张同宽高尺寸的图 A/B/C
  2. 对 B 和 C 文件名进行 base64 编码,编码后的值为 D 和 E
    • D: png/width300/19-01-21-1f1133cc505f67f48ac32a300c7018c1.png base64 编码后: cG5nL3dpZHRoMzAwLzE5LTAxLTIxLTFmMTEzM2NjNTA1ZjY3ZjQ4YWMzMmEzMDBjNzAxOGMxLnBuZw==
    • E: png/width300/19-01-21-d3a276d1eb5145e78c93bd9c736058da.png base64 编码后: cG5nL3dpZHRoMzAwLzE5LTAxLTIxLWQzYTI3NmQxZWI1MTQ1ZTc4YzkzYmQ5YzczNjA1OGRhLnBuZw==
    • base64编码在线加密解密: http://tool.oschina.net/encrypt?type=3
  3. 拼凑 url,具体格式和拼凑结果

图片裁剪

可以使用七牛的图片裁剪功能,将多张图片裁剪为相同尺寸,如将图片裁剪为宽高为300的图片,使用?imageView2/1/w/300/h/300/format/jpg即可。

https://i.iamlj.com/19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png
--->
https://i.iamlj.com/19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png?imageView2/1/w/300/h/300/format/jpg

另存为

裁剪图片结果url图片,都可以使用处理结果另存功能,保存为新的文件名。

裁剪图片另存为

如下 Java 代码,是将存储空间中的文件19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png 裁剪为宽高300的 jpg 图片保存为 png/width300/19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png新文件。实现可通过 https://i.iamlj.com/png/width300/19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png 访问的效果。

/**
 * 图片另存为
 */
public class PfopsImage {

    public static void main(String args[]) throws IOException {
        //设置好账号的ACCESS_KEY和SECRET_KEY
        String ACCESS_KEY = Config.ACCESS_KEY;
        String SECRET_KEY = Config.SECRET_KEY;
        //要上传的空间
        String bucketname = "image";
        String key = "19-01-21-1f1133cc505f67f48ac32a300c7018c1.png";
        //上传后的文件名
        String newKey = "png/width300/19-01-21-1f1133cc505f67f48ac32a300c7018c1.png";

        //设置转码操作参数
        String fops = "imageView2/1/w/300/h/300/format/jpg";
        //设置转码的队列
        String pipeline = "12349";

        //可以对转码后的文件进行使用saveas参数自定义命 名,当然也可以不指定文件会默认命名并保存在当前空间。
        String urlbase64 = UrlSafeBase64.encodeToString(bucketname + ":" + newKey);
        String pfops = fops + "|saveas/" + urlbase64;

        //密钥配置
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

        //第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。
        Zone z = Zone.autoZone();
        Configuration c = new Configuration(z);

        OperationManager operationManager = new OperationManager(auth, c);

        String id = null;
        try {
            id = operationManager.pfop(bucketname, key, pfops, pipeline, true);
        } catch (QiniuException e) {
            e.printStackTrace();
        }

        System.out.println(id);
    }

}

gif 结果图片另存为

同理利用另存为功能将文件

png/width300/19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png?animate/duration/20/merge/key/cG5nL3dpZHRoMzAwLzE5LTAxLTIxLTFmMTEzM2NjNTA1ZjY3ZjQ4YWMzMmEzMDBjNzAxOGMxLnBuZw==/key/cG5nL3dpZHRoMzAwLzE5LTAxLTIxLWQzYTI3NmQxZWI1MTQ1ZTc4YzkzYmQ5YzczNjA1OGRhLnBuZw==

另存为

gif/width300/19-01-21-gif-result.png

参考文档

合成动图

posted @ 2019-01-21 09:28  刘靖  阅读(1468)  评论(2编辑  收藏  举报