|
@@ -1,238 +0,0 @@
|
|
|
-package com.fdkankan.fyun.qiniu;
|
|
|
-
|
|
|
-import com.qiniu.common.Zone;
|
|
|
-import com.qiniu.util.Auth;
|
|
|
-import com.qiniu.util.UrlSafeBase64;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.apache.http.HttpResponse;
|
|
|
-import org.apache.http.client.HttpClient;
|
|
|
-import org.apache.http.client.methods.HttpPost;
|
|
|
-import org.apache.http.entity.StringEntity;
|
|
|
-import org.apache.http.impl.client.DefaultHttpClient;
|
|
|
-import org.apache.http.protocol.HTTP;
|
|
|
-import org.apache.http.util.EntityUtils;
|
|
|
-
|
|
|
-import java.io.IOException;
|
|
|
-import java.net.URLEncoder;
|
|
|
-
|
|
|
-public class QiniuUtil {
|
|
|
-
|
|
|
- public static String accessKey = "dlPPwgZky_F-iP8CbSbJpiAtAcqw3BYwb9rdHMrS";
|
|
|
- public static String secretKey = "YEtkLKDsImXB-8m1CT1zV_YwCwwGvrUvo2ktj9KZ";
|
|
|
- public static Zone zone = Zone.zone1();
|
|
|
- public static String bucket = "scene3d";
|
|
|
- public static String remoteUrl = "https://4dkanzhan.4dkankan.com/";
|
|
|
-
|
|
|
- /**
|
|
|
- * 视频帧缩略图接口(vframe)用于从视频流中截取指定时刻的单帧画面并按指定大小缩放成图片
|
|
|
- * @param key 文件名 a.mp4
|
|
|
- * @param suffixName 输出的目标截图格式,支持jpg、png等。
|
|
|
- * @param second 指定截取视频的时刻,单位:秒,精确到毫秒。
|
|
|
- * @param width 缩略图宽度,单位:像素(px),取值范围为1-3840, 可不传。
|
|
|
- * @param height 缩略图高度,单位:像素(px),取值范围为1-2160, 可不传。
|
|
|
- * @param rotate 指定顺时针旋转的度数,可取值为90、180、270、auto,默认为不旋转,可不传。
|
|
|
- * @param newKey 新文件名称
|
|
|
- * @param notifyURL 回调地址
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public static void getVideoFrame(String key, String suffixName, String second, Integer width, Integer height, Integer rotate, String newKey, String notifyURL) throws IOException {
|
|
|
- StringBuffer sb = new StringBuffer("vframe/").append(suffixName).append("/offset/").append(second);
|
|
|
- if (width != null){
|
|
|
- sb.append("/w/").append(width);
|
|
|
- }
|
|
|
- if (height != null){
|
|
|
- sb.append("/h/").append(height);
|
|
|
- }
|
|
|
- if (rotate != null){
|
|
|
- sb.append("/rotate/").append(rotate);
|
|
|
- }
|
|
|
-
|
|
|
- String fop = URLEncoder.encode(sb.toString(), "utf-8");
|
|
|
- StringBuffer ops = new StringBuffer("bucket=").append(bucket).append("&key=").append(key).append("&fops=").append(fop);
|
|
|
- String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + newKey);
|
|
|
- ops.append("|saveas/").append(saveAs);
|
|
|
-
|
|
|
- ops.append("¬ifyURL=").append(notifyURL);
|
|
|
-
|
|
|
- HttpPost post = new HttpPost("http://api.qiniu.com/pfop/");
|
|
|
- post.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
|
|
|
- StringEntity entity = new StringEntity(ops.toString(), "utf-8");
|
|
|
- entity.setContentType("application/x-www-form-urlencoded");
|
|
|
- post.setEntity(entity);
|
|
|
-
|
|
|
- Auth auth = Auth.create(accessKey, secretKey);
|
|
|
- String si = auth.signRequest("http://api.qiniu.com/pfop/", ops.toString().getBytes(), "application/x-www-form-urlencoded");
|
|
|
- post.setHeader("Authorization", "QBox " + si);
|
|
|
- HttpClient client = new DefaultHttpClient();
|
|
|
- HttpResponse res = client.execute(post);
|
|
|
- String ret = EntityUtils.toString(res.getEntity(), "UTF-8");
|
|
|
- System.out.println(ret);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 给视频添加水印
|
|
|
- * @param key a.mp4
|
|
|
- * @param text 4dage
|
|
|
- * @param fontColor #FFFF00
|
|
|
- * @param newKey new_a.mp4
|
|
|
- * @param notifyURL 回调地址
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public static void waterMark(String key, String text, String fontColor, String newKey, String notifyURL) throws IOException {
|
|
|
- String fop = "avthumb/mp4/";
|
|
|
- fop = URLEncoder.encode(fop, "utf-8");
|
|
|
- //水印文字
|
|
|
- String wmText = UrlSafeBase64.encodeToString(text);
|
|
|
- //水印文字的颜色
|
|
|
- String wmFontColor = UrlSafeBase64.encodeToString(fontColor);
|
|
|
- //设置avthumb 接口
|
|
|
- StringBuffer ops = new StringBuffer("bucket=").append(bucket).append("&key=").append(key).append("&fops=").append(fop);
|
|
|
- ops.append("avthumb/mp4/wmText/").append(wmText).append("/wmGravityText/NorthEast/wmFontColor/").append(wmFontColor);
|
|
|
- String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + newKey);
|
|
|
- ops.append("|saveas/").append(saveAs);
|
|
|
- ops.append("¬ifyURL=").append(notifyURL);
|
|
|
-
|
|
|
- HttpPost post = new HttpPost("http://api.qiniu.com/pfop/");
|
|
|
- post.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
|
|
|
- StringEntity entity = new StringEntity(ops.toString(), "utf-8");
|
|
|
- entity.setContentType("application/x-www-form-urlencoded");
|
|
|
- post.setEntity(entity);
|
|
|
-
|
|
|
- Auth auth = Auth.create(accessKey, secretKey);
|
|
|
- String si = auth.signRequest("http://api.qiniu.com/pfop/", ops.toString().getBytes(), "application/x-www-form-urlencoded");
|
|
|
- post.setHeader("Authorization", "QBox " + si);
|
|
|
- HttpClient client = new DefaultHttpClient();
|
|
|
- HttpResponse res = client.execute(post);
|
|
|
- String ret = EntityUtils.toString(res.getEntity(), "UTF-8");
|
|
|
- System.out.println(ret);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 将4K图片裁剪成64张512*512
|
|
|
- * @param key
|
|
|
- * @param notifyURL 回调地址 "http://wwww.cn/qn/notify&force=1"
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public static void crop4K(String key, String notifyURL) throws IOException {
|
|
|
- String fop = "imageMogr2/auto-orient/";
|
|
|
- fop = URLEncoder.encode(fop, "utf-8");
|
|
|
-
|
|
|
- String fileName = key.substring(0, key.lastIndexOf("."));
|
|
|
- String suffixName = key.substring(key.lastIndexOf("."));
|
|
|
-
|
|
|
- Auth auth = Auth.create(accessKey, secretKey);
|
|
|
-
|
|
|
- for (int i = 0; i < 8; i++) {
|
|
|
- for (int j = 0; j < 8; j++) {
|
|
|
- String ret = crop(key, notifyURL, fop, fileName, suffixName, auth, i, j);
|
|
|
- System.out.println(ret);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 将2K图片裁剪成16张512*512
|
|
|
- * @param key
|
|
|
- * @param notifyURL 回调地址 "http://wwww.cn/qn/notify&force=1"
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public static void crop2k(String key, String notifyURL) throws IOException {
|
|
|
- String fop = "imageMogr2/auto-orient/";
|
|
|
- fop = URLEncoder.encode(fop, "utf-8");
|
|
|
-
|
|
|
- String fileName = key.substring(0, key.lastIndexOf("."));
|
|
|
- String suffixName = key.substring(key.lastIndexOf("."));
|
|
|
-
|
|
|
- Auth auth = Auth.create(accessKey, secretKey);
|
|
|
-
|
|
|
- for (int i = 0; i < 4; i++) {
|
|
|
- for (int j = 0; j < 4; j++) {
|
|
|
- String ret = crop(key, notifyURL, fop, fileName, suffixName, auth, i, j);
|
|
|
- System.out.println(ret);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 将1K图片裁剪成4张512*512
|
|
|
- * @param key
|
|
|
- * @param notifyURL 回调地址 "http://wwww.cn/qn/notify&force=1"
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public static void crop1k(String key, String notifyURL) throws IOException {
|
|
|
- String fop = "imageMogr2/auto-orient/";
|
|
|
- fop = URLEncoder.encode(fop, "utf-8");
|
|
|
-
|
|
|
- String fileName = key.substring(0, key.lastIndexOf("."));
|
|
|
- String suffixName = key.substring(key.lastIndexOf("."));
|
|
|
-
|
|
|
- Auth auth = Auth.create(accessKey, secretKey);
|
|
|
-
|
|
|
- for (int i = 0; i < 2; i++) {
|
|
|
- for (int j = 0; j < 2; j++) {
|
|
|
- String ret = crop(key, notifyURL, fop, fileName, suffixName, auth, i, j);
|
|
|
- System.out.println(ret);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private static String crop(String key, String notifyURL, String fop, String fileName, String suffixName, Auth auth, int i, int j) throws IOException {
|
|
|
- StringBuffer ops = new StringBuffer("bucket=").append(bucket).append("&key=").append(key).append("&fops=").append(fop);
|
|
|
- ops.append("crop/!512x512a" + j * 512 + "a" + i * 512);
|
|
|
-
|
|
|
- String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + fileName + "_" + j + "_" + i + suffixName);
|
|
|
- ops.append("|saveas/").append(saveAs);
|
|
|
- ops.append("¬ifyURL=").append(notifyURL);
|
|
|
- HttpPost post = new HttpPost("http://api.qiniu.com/pfop/");
|
|
|
- post.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
|
|
|
- StringEntity entity = new StringEntity(ops.toString(), "utf-8");
|
|
|
- entity.setContentType("application/x-www-form-urlencoded");
|
|
|
- post.setEntity(entity);
|
|
|
-
|
|
|
- String si = auth.signRequest("http://api.qiniu.com/pfop/", ops.toString().getBytes(), "application/x-www-form-urlencoded");
|
|
|
- post.setHeader("Authorization", "QBox " + si);
|
|
|
- HttpClient client = new DefaultHttpClient();
|
|
|
- HttpResponse res = client.execute(post);
|
|
|
- return EntityUtils.toString(res.getEntity(), "UTF-8");
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 将七牛云上的图片缩放成指定大小的图片
|
|
|
- * @param key
|
|
|
- * @param width
|
|
|
- * @param height
|
|
|
- * @param notifyURL
|
|
|
- * @throws IOException
|
|
|
- */
|
|
|
- public static void thumb(String key, String width, String height, String notifyURL, String newKey) throws IOException {
|
|
|
- String fop = "imageMogr2/auto-orient/";
|
|
|
- fop = URLEncoder.encode(fop, "utf-8");
|
|
|
-
|
|
|
- String fileName = key.substring(0, key.lastIndexOf("."));
|
|
|
- String suffixName = key.substring(key.lastIndexOf("."));
|
|
|
-
|
|
|
- Auth auth = Auth.create(accessKey, secretKey);
|
|
|
-
|
|
|
- StringBuffer ops = new StringBuffer("bucket=").append(bucket).append("&key=").append(key).append("&fops=").append(fop);
|
|
|
- ops.append("thumbnail/"+width+"x"+height+"!");
|
|
|
-
|
|
|
- //saveAs新生成文件的名称
|
|
|
- newKey = StringUtils.isNotEmpty(newKey) ? newKey : (fileName + "_thumb" + suffixName);
|
|
|
- String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + newKey);
|
|
|
- ops.append("|saveas/").append(saveAs);
|
|
|
- ops.append("¬ifyURL=").append(notifyURL);
|
|
|
- HttpPost post = new HttpPost("http://api.qiniu.com/pfop/");
|
|
|
- post.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
|
|
|
- StringEntity entity = new StringEntity(ops.toString(), "utf-8");
|
|
|
- entity.setContentType("application/x-www-form-urlencoded");
|
|
|
- post.setEntity(entity);
|
|
|
-
|
|
|
- String si = auth.signRequest("http://api.qiniu.com/pfop/", ops.toString().getBytes(), "application/x-www-form-urlencoded");
|
|
|
- post.setHeader("Authorization", "QBox " + si);
|
|
|
- HttpClient client = new DefaultHttpClient();
|
|
|
- HttpResponse res = client.execute(post);
|
|
|
- System.out.println(EntityUtils.toString(res.getEntity(), "UTF-8"));
|
|
|
- }
|
|
|
-
|
|
|
-}
|