123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- package com.fdkankan.common.util;
- 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/";
- public static void main(String[] args) throws IOException {
- // crop4K("4k.jpg", "http://www.baidu.com");
- // thumb("test111.jpg", "128", "128", "http://www.baidu.com");
- /*try{
- File f = new File("D:/usr/local/szggkfzlg/upload/20190125181036.png");
- FileInputStream fi = new FileInputStream(f);
- try{
- BufferedImage sourceImg =ImageIO.read(fi);//判断图片是否损坏
- int picWidth= sourceImg.getWidth(); //确保图片是正确的(正确的图片可以取得宽度)
- }catch (Exception e) {
- // TODO: handle exception
- fi.close();//关闭IO流才能操作图片
- }finally{
- fi.close();//最后一定要关闭IO流
- }
- }catch (Exception e ) {
- // TODO: handle exception
- System.out.println(e.toString());
- }*/
- getVideoFrame("a.mp4", "png", "6.010", null, null, null, "a_framw.png", "http://www.baidu.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"));
- }
- }
|