七牛合成动图
注意
- 动图合成接口目前仅适用于存储在七牛的图片
- 接口可支持处理的原图片格式有 jpeg 和 png
- 支持的最大帧数为 20
- 支持的最大图片尺寸为 1080*1080,必须是多张宽高尺寸相同的图片,文档里没说明
- 文件名,拼凑的 key 值必须经过 Base64 编码,多个图片文件拼凑时,不断拼凑
/key/<文件名base64Encode >
即可
操作步骤
实现效果,将3张图片合成1张 gif 动图。
- 素材,准备3张同宽高尺寸的图 A/B/C
- 对 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
- D:
- 拼凑 url,具体格式和拼凑结果
- 格式:
A?animate/duration/20/merge/key/D/key/E
- 结果 url:https://i.iamlj.com/png/width300/19-01-21-e43bb0d5e2f8f0bf48a36f20c1e5a779.png?animate/duration/20/merge/key/cG5nL3dpZHRoMzAwLzE5LTAxLTIxLTFmMTEzM2NjNTA1ZjY3ZjQ4YWMzMmEzMDBjNzAxOGMxLnBuZw/key/cG5nL3dpZHRoMzAwLzE5LTAxLTIxLWQzYTI3NmQxZWI1MTQ1ZTc4YzkzYmQ5YzczNjA1OGRhLnBuZw
- 格式:
图片裁剪
可以使用七牛的图片裁剪功能,将多张图片裁剪为相同尺寸,如将图片裁剪为宽高为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