$url));
$json = json_decode($html['html'], true);
if(empty($json['code']))
{
return array();
}
else
{
return $json;
}
}
/**
* 触发式音视频转换
* 水印:avthumb/wmImage/safeBase64Encode(image url)/Gravity/位置
* 位置:
* NorthWest | North | NorthEast
* West | Center | East
* SouthWest | South | SouthEast
*/
public static function convertMedia($scope, $key, $notifyUrl, $mark = '', $markPos = 'NorthEast')
{
$url = "http://api.qiniu.com/pfop/";
$ops = array();
if(!empty($mark))
{
$ops[] = 'avthumb/mp4/wmImage/' . self::safeBase64Encode($mark) . '/Gravity/' . $markPos; //转码成MP4
$ops[] = 'avthumb/m3u8/preset/video_1000k/wmImage/' . self::safeBase64Encode($mark) . '/Gravity/' . $markPos; //转码成M3U8
}
else
{
$ops[] = 'avthumb/mp4';
$ops[] = 'avthumb/m3u8/preset/video_1000k';
}
$data = array();
$data['bucket'] = $scope;
$data['key'] = $key;
$data['fops'] = implode(';', $ops);
$data['notifyURL'] = $notifyUrl;
$accessToken = self::getAccessToken($url, $data);
$header = array();
$header[] = 'Authorization: QBox ' . $accessToken;
$html = Http::request(array('url' => $url, 'data' => $data, 'httpheader' => $header));
$json = json_decode($html['html'], true);
if(empty($json['persistentId']))
{
return '';
}
else
{
return $json['persistentId'];
}
}
/**
* 视频截图
* 截图:vframe/(jpg|png)/offset/秒数/w/宽/h/高/rotate/旋转(空|90|180|270|auto)
*/
public static function getVideoImage($scope, $key, $notifyUrl, $second, $width, $height, $rotate = '')
{
$url = "http://api.qiniu.com/pfop/";
$data = array();
$data['bucket'] = $scope;
$data['key'] = $key;
$data['fops'] = sprintf('vframe/jpg/offset/%s/w/%s/h/%s', $second, $width, $height);
if(!empty($rotate))
{
$data['fops'] .= $data['fops'] . '/rotate/' . $rotate;
}
$data['notifyURL'] = $notifyUrl;
$accessToken = self::getAccessToken($url, $data);
$header = array();
$header[] = 'Authorization: QBox ' . $accessToken;
$html = Http::request(array('url' => $url, 'data' => $data, 'httpheader' => $header));
//http://api.qiniu.com/status/get/prefop?id=53b05821c868fc3b200498ba
$json = json_decode($html['html'], true);
if(empty($json['persistentId']))
{
return '';
}
else
{
return $json['persistentId'];
}
}
/**
* 得到音视频信息
*/
public static function getMediaInfo($scope, $key, $private = false, $extTime = 3600)
{
if(preg_match('/\?/ism', $url))
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key . '&avinfo';
}
else
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key . '?avinfo';
}
if($private)
{
$url .= '&' . self::getDownloadToken($url, $extTime);
}
$html = Http::request(array('url' => $url));
$json = json_decode($html['html'], true);
if(empty($json['streams']))
{
return array();
}
else
{
return $json;
}
}
/**
* 得到图片信息
*/
public static function getImageInfo($scope, $key, $private = false, $extTime = 120)
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key . '?imageInfo';
if($private)
{
$url .= '&' . self::getDownloadToken($url, $extTime);
}
$html = Http::request(array('url' => $url));
$json = json_decode($html['html'], true);
if(empty($json['format']))
{
return array();
}
else
{
return $json;
}
}
/**
* 得到图片Exif
*/
public static function getImageExif($scope, $key, $private = false, $extTime = 120)
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key . '?exif';
if($private)
{
$url .= '&' . self::getDownloadToken($url, $extTime);
}
$html = Http::request(array('url' => $url));
$json = json_decode($html['html'], true);
if(empty($json['error']))
{
return $json;
}
else
{
return array();
}
}
/**
* 得到图片主颜色(RGB值)
*/
public static function getImageRGB($scope, $key, $private = false)
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key . '?imageAve';
if($private)
{
$url .= '&' . self::getDownloadToken($url);
}
$html = Http::request(array('url' => $url));
$json = json_decode($html['html'], true);
if(empty($json['RGB']))
{
return '';
}
else
{
return $json['RGB'];
}
}
/**
* 得到缩略图片地址
* @param $imageParam
* array('width' => 100,
* 'height' => 100,
* 'format' => '',
* 'crop_type' => 'Center',
* 'crop_width' => '',
* 'crop_height' => '',
* 'rotate' => '',
* 'blur' => '3x5',
* 'mark_url' => '',
* 'mark_type' => '',
* 'mark_dissolve' => '')
* 参数说明:
* width,height 当某一项为0时,以另一个为主
* format 指定输出格式:空为原图格式,jpg,gif,png,webp
* crop_type 是否进行裁剪,如果要进行裁剪,则width和height不能为0
* crop_type取值:
* NorthWest | North | NorthEast
* West | Center | East
* SouthWest | South | SouthEast
*
* crop_width,crop_height 当需要进行裁剪时,必需填写此两个值
* rotate 旋转,取值:1-360
* blur 高斯模糊,取值:1-50
*/
public static function getImageZoomUrl($scope, $key, $imageParam = array(), $private = false, $extTime = 43200)
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key . '?imageMogr2/auto-orient/strip/thumbnail';
if(isset($imageParam['width']) && !empty($imageParam['width']))
{
//正比例缩放
$url .= '/' . $imageParam['width'] . 'x';
}
if(isset($imageParam['height']) && !empty($imageParam['height']))
{
//正比例缩放
if(substr($url, strlen($url) - 1, 1) == 'x')
{
$url .= $imageParam['height'];
}
else
{
$url .= '/x' . $imageParam['height'];
}
}
if(isset($imageParam['format']) && !empty($imageParam['format']))
{
//设置输出格式
$url .= '/format/' . $imageParam['format'];
//如果输出为jpg格式,则设置渐进显示模式
if($imageParam['format'] == 'jpg')
{
$url .= '/interlace/1';
}
}
if(isset($imageParam['rotate']) && !empty($imageParam['rotate']))
{
//设置旋转
$url .= '/rotate/' . $imageParam['rotate'];
}
if(isset($imageParam['blur']) && !empty($imageParam['blur']))
{
//设置模糊
$url .= '/blur/' . $imageParam['blur'];
}
if(isset($imageParam['crop_type']) && !empty($imageParam['crop_type']))
{
//设置裁剪模式
$url .= '/gravity/' . $imageParam['crop_type'] . '/crop';
if(isset($imageParam['crop_width']) && !empty($imageParam['crop_width']))
{
//正比例缩放
$url .= '/' . $imageParam['crop_width'] . 'x';
}
if(isset($imageParam['crop_height']) && !empty($imageParam['crop_height']))
{
//正比例缩放
if(substr($url, strlen($url) - 1, 1) == 'x')
{
$url .= $imageParam['crop_height'];
}
else
{
$url .= '/x' . $imageParam['crop_height'];
}
}
}
if(isset($imageParam['mark_url']) && !empty($imageParam['mark_url']))
{
//打水印
$url .= '|watermark/1/image/' . self::safeBase64Encode($imageParam['mark_url']);
if(isset($imageParam['mark_dissolve']) && !empty($imageParam['mark_dissolve']))
{
//透明度
$url .= '/dissolve/' . $imageParam['mark_dissolve'];
}
if(isset($imageParam['mark_type']) && !empty($imageParam['mark_type']))
{
//水印位置
$url .= '/gravity/' . $imageParam['mark_type'];
}
}
if($private)
{
$url .= '&' . self::getDownloadToken($url, $extTime);
}
return $url;
}
/**
* 得到链接
*/
public static function getUrl($scope, $key, $private = false, $extTime = 43200)
{
$url = 'http://' . $scope . '.qiniudn.com/' . $key;
if($private)
{
$url .= '?' . self::getDownloadToken($url, $extTime);
}
return $url;
}
/**
* 抓取资源
*/
public static function fetchUrl($scope, $key, $url)
{
$fileName = self::safeBase64Encode($scope . ':' . $key);
$fetchUrl = self::safeBase64Encode($url);
$url = 'http://iovip.qbox.me/fetch/' . $fetchUrl . '/to/' . $fileName;
$accessToken = self::getAccessToken($url);
$header = array();
$header[] = 'Authorization: QBox ' . $accessToken;
$html = Http::request(array('url' => $url, 'httpheader' => $header, 'timeout' => 60));
$json = json_decode($html['html'], true);
if(empty($json))
{
return true;
}
else
{
return false;
}
}
/**
* 删除资源
*/
public static function delKey($scope, $key)
{
$fileName = self::safeBase64Encode($scope . ':' . $key);
$url = 'http://rs.qiniu.com/delete/' . $fileName;
$accessToken = self::getAccessToken($url);
$header = array();
$header[] = 'Authorization: QBox ' . $accessToken;
$html = Http::request(array('url' => $url, 'httpheader' => $header, 'timeout' => 60));
$json = json_decode($html['html'], true);
if(empty($json))
{
return true;
}
else
{
return false;
}
}
/**
* 移动资源
*/
public static function moveKey($scopeSrc, $keySrc, $scopeDest, $keyDest)
{
$keySrc = self::safeBase64Encode($scopeSrc . ':' . $keySrc);
$keyDest = self::safeBase64Encode($scopeDest . ':' . $keyDest);
$url = 'http://rs.qiniu.com/move/' . $keySrc . '/' . $keyDest;
$accessToken = self::getAccessToken($url);
$header = array();
$header[] = 'Authorization: QBox ' . $accessToken;
$html = Http::request(array('url' => $url, 'httpheader' => $header, 'timeout' => 60));
$json = json_decode($html['html'], true);
if(empty($json))
{
return true;
}
else
{
return false;
}
}
/**
* 复制资源
*/
public static function copyKey($scopeSrc, $keySrc, $scopeDest, $keyDest)
{
$keySrc = self::safeBase64Encode($scopeSrc . ':' . $keySrc);
$keyDest = self::safeBase64Encode($scopeDest . ':' . $keyDest);
$url = 'http://rs.qiniu.com/copy/' . $keySrc . '/' . $keyDest;
$accessToken = self::getAccessToken($url);
$header = array();
$header[] = 'Authorization: QBox ' . $accessToken;
$html = Http::request(array('url' => $url, 'httpheader' => $header, 'timeout' => 60));
$json = json_decode($html['html'], true);
if(empty($json))
{
return true;
}
else
{
return false;
}
}
/**
* 上传文件(直传)
*/
public static function uploadFile($scope, $key, $fileName, $extTime = 86400, $notifyUrl = '')
{
$data = array();
if(empty($notifyUrl))
{
$data['token'] = self::getUploadFileToken($scope, $extTime);
}
else
{
$data['token'] = self::getUploadMediaToken($scope, $extTime, $notifyUrl);
}
$data['filename'] = basename($fileName);
$data['file'] = '@' . $fileName;
$data['key'] = $key;
$data['upload_file'] = true;
$html = Http::request(array('url' => 'http://up.qiniu.com', 'data' => $data, 'timeout' => 5 * 60));
print_r($html);
$json = json_decode($html['html'], true);
if(empty($json['key']))
{
return array();
}
else
{
if(empty($notifyUrl))
{
$json['name'] = basename($fileName);
return $json;
}
else
{
return array('persistentId' => $json['persistentId']);
}
}
}
/**
* 文件上传(分片)
*/
public static function uploadFileSplit($scope, $key, $file, $extTime = 86400, $notifyUrl = '')
{
$fileSize = 0;
$ctxInfo = array();
$host = 'http://up.qiniu.com';
$header = array();
if(empty($notifyUrl))
{
$header[] = 'Authorization: UpToken ' . self::getUploadFileToken($scope, $extTime);
}
else
{
$header[] = 'Authorization: UpToken ' . self::getUploadMediaToken($scope, $extTime, $notifyUrl);
}
$fp = fopen($file, 'rb');
while(!feof($fp))
{
$data = fread($fp, 4194304); //4194304为4M的字节数 4 * 1024 * 1024
$fileSize += strlen($data);
$url = $host . '/mkblk/' . strlen($data);
$html = Http::request(array('url' => $url, 'data' => $data, 'timeout' => 5 * 60, 'httpheader' => $header));
$json = json_decode($html['html'], true);
if(empty($json['crc32']))
{
return array();
}
else
{
$ctxInfo[] = $json['ctx'];
$host = $json['host'];
}
}
$ctxData = implode(',', $ctxInfo);
$url = $host . '/mkfile/' . $fileSize . '/key/' . self::safeBase64Encode($key);
$html = Http::request(array('url' => $url, 'data' => $ctxData, 'timeout' => 5 * 60, 'httpheader' => $header));
$json = json_decode($html['html'], true);
if(empty($json['key']))
{
return array();
}
else
{
if(empty($notifyUrl))
{
return $json;
}
else
{
return array('persistentId' => $json['persistentId']);
}
}
}
}
?>