| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | 
							- import $store from '@/sheep/store';
 
- import { staticUrl } from '@/sheep/config';
 
- const cdn = (url = '', cdnurl = '') => {
 
-   if (!url) return '';
 
-   if (url.indexOf('http') === 0) {
 
-     return url;
 
-   }
 
-   if (cdnurl === '') {
 
-     cdnurl = $store('app').info.cdnurl;
 
-   }
 
-   return cdnurl + url;
 
- };
 
- export default {
 
-   // 添加cdn域名前缀
 
-   cdn,
 
-   // 对象存储自动剪裁缩略图
 
-   thumb: (url = '', params) => {
 
-     url = cdn(url);
 
-     return append_thumbnail_params(url, params);
 
-   },
 
-   // 静态资源地址
 
-   static: (url = '', staticurl = '') => {
 
-     if (staticurl === '') {
 
-       staticurl = staticUrl;
 
-     }
 
-     if (staticurl !== 'local') {
 
-       url = cdn(url, staticurl);
 
-     }
 
-     return url;
 
-   },
 
-   // css背景图片地址
 
-   css: (url = '', staticurl = '') => {
 
-     if (staticurl === '') {
 
-       staticurl = staticUrl;
 
-     }
 
-     if (staticurl !== 'local') {
 
-       url = cdn(url, staticurl);
 
-     }
 
-     // #ifdef APP-PLUS
 
-     if (staticurl === 'local') {
 
-       url = plus.io.convertLocalFileSystemURL(url);
 
-     }
 
-     // #endif
 
-     return `url(${url})`;
 
-   },
 
- };
 
- /**
 
-  * 追加对象存储自动裁剪/压缩参数
 
-  *
 
-  * @return string
 
-  */
 
- function append_thumbnail_params(url, params) {
 
-   const filesystem = $store('app').info.filesystem;
 
-   if (filesystem === 'public') {
 
-     return url;
 
-   }
 
-   let width = params.width || '200'; // 宽度
 
-   let height = params.height || '200'; // 高度
 
-   let mode = params.mode || 'lfit'; // 缩放模式
 
-   let quality = params.quality || 90; // 压缩质量
 
-   let gravity = params.gravity || 'center'; // 剪裁质量
 
-   let suffix = '';
 
-   let crop_str = '';
 
-   let quality_str = '';
 
-   let size = width + 'x' + height;
 
-   switch (filesystem) {
 
-     case 'aliyun':
 
-       // 裁剪
 
-       if (!gravity && gravity != 'center') {
 
-         // 指定了裁剪区域
 
-         mode = 'mfit';
 
-         crop_str = '/crop,g_' + gravityFormat('aliyun', gravity) + ',w_' + width + ',h_' + height;
 
-       }
 
-       // 质量压缩
 
-       if (quality > 0 && quality < 100) {
 
-         quality_str = '/quality,q_' + quality;
 
-       }
 
-       // 缩放参数
 
-       suffix = 'x-oss-process=image/resize,m_' + mode + ',w_' + width + ',h_' + height;
 
-       // 拼接裁剪和质量压缩
 
-       suffix += crop_str + quality_str;
 
-       break;
 
-     case 'qcloud':
 
-       let mode_str = 'thumbnail';
 
-       if (mode == 'fill' || (!gravity && gravity != 'center')) {
 
-         // 指定了裁剪区域
 
-         mode_str = 'crop';
 
-         mode = 'fill';
 
-         crop_str = '/gravity/' + gravityFormat('qcloud', gravity);
 
-       }
 
-       // 质量压缩
 
-       if (quality > 0 && quality < 100) {
 
-         quality_str = '/rquality/' + quality;
 
-       }
 
-       switch (mode) {
 
-         case 'lfit':
 
-           size = '' + size + '>';
 
-           break;
 
-         case 'mfit':
 
-           size = '!' + size + 'r';
 
-         case 'fill':
 
-           break;
 
-         case 'pad':
 
-           size = size + '/pad/1';
 
-           break;
 
-         case 'fixed':
 
-           size = size + '!';
 
-           break;
 
-       }
 
-       suffix = 'imageMogr2/' + mode_str + '/' + size + crop_str + quality_str;
 
-       break;
 
-     case 'qiniu':
 
-       if (mode == 'fill' || (!gravity && gravity != 'center')) {
 
-         // 指定了裁剪区域,全部转为 mfit
 
-         mode = 'mfit';
 
-         crop_str = '/gravity/' + gravityFormat('qiniu', gravity) + '/crop/' + size;
 
-       }
 
-       // 质量压缩
 
-       if (quality > 0 && quality < 100) {
 
-         quality_str = '/quality/' + quality;
 
-       }
 
-       switch (mode) {
 
-         case 'lfit':
 
-         case 'pad': // 七牛不支持在缩放之后,尺寸不足时,填充背景色,所以这里和 lfit 模式一样
 
-           size = size + '>';
 
-           break;
 
-         case 'mfit':
 
-           size = '!' + size + 'r';
 
-           break;
 
-         case 'fill':
 
-           // 会被转为 mfit
 
-           break;
 
-         case 'fixed':
 
-           size = size + '!';
 
-           break;
 
-       }
 
-       suffix = 'imageMogr2/thumbnail/' + size + crop_str + quality_str;
 
-       break;
 
-   }
 
-   return url + '?' + suffix;
 
- }
 
- /**
 
-  * 裁剪区域格式转换
 
-  *
 
-  * @param string $type aliyun|qcloud|qiniu
 
-  * @param string $gravity 统一的裁剪区域字符
 
-  *
 
-  * @return string
 
-  */
 
- function gravityFormatMap(type, gravity) {
 
-   let gravityFormat = {
 
-     aliyun: {
 
-       north_west: 'nw', // 左上
 
-       north: 'north', // 中上
 
-       north_east: 'ne', // 右上
 
-       west: 'west', // 左中
 
-       center: 'center', // 中部
 
-       east: 'east', // 右中
 
-       south_west: 'sw', // 左下
 
-       south: 'south', // 中下
 
-       south_east: 'se', // 右下
 
-     },
 
-     qcloud: {
 
-       northwest: 'nw', // 左上
 
-       north: 'north', // 中上
 
-       northeast: 'ne', // 右上
 
-       west: 'west', // 左中
 
-       center: 'center', // 中部
 
-       east: 'east', // 右中
 
-       southwest: 'sw', // 左下
 
-       south: 'south', // 中下
 
-       southeast: 'se', // 右下
 
-     },
 
-     qiniu: {
 
-       NorthWest: 'nw', // 左上
 
-       North: 'north', // 中上
 
-       NorthEast: 'ne', // 右上
 
-       West: 'west', // 左中
 
-       Center: 'center', // 中部
 
-       East: 'east', // 右中
 
-       SouthWest: 'sw', // 左下
 
-       South: 'south', // 中下
 
-       SouthEast: 'se', // 右下
 
-     },
 
-   };
 
-   return gravityFormat[type][gravity];
 
- }
 
 
  |