123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- "use strict";
- const sheep_store_index = require("../store/index.js");
- const sheep_config_index = require("../config/index.js");
- const cdn = (url = "", cdnurl = "") => {
- if (!url)
- return "";
- if (url.indexOf("http") === 0) {
- return url;
- }
- if (cdnurl === "") {
- cdnurl = sheep_store_index.$store("app").info.cdnurl;
- }
- return cdnurl + url;
- };
- const $url = {
- // 添加cdn域名前缀
- cdn,
- // 对象存储自动剪裁缩略图
- thumb: (url = "", params) => {
- url = cdn(url);
- return append_thumbnail_params(url, params);
- },
- // 静态资源地址
- static: (url = "", staticurl = "") => {
- if (staticurl === "") {
- staticurl = sheep_config_index.staticUrl;
- }
- if (staticurl !== "local") {
- url = cdn(url, staticurl);
- }
- return url;
- },
- // css背景图片地址
- css: (url = "", staticurl = "") => {
- if (staticurl === "") {
- staticurl = sheep_config_index.staticUrl;
- }
- if (staticurl !== "local") {
- url = cdn(url, staticurl);
- }
- return `url(${url})`;
- }
- };
- function append_thumbnail_params(url, params) {
- const filesystem = sheep_store_index.$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") {
- 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":
- size = size + ">";
- break;
- case "mfit":
- size = "!" + size + "r";
- break;
- case "fill":
- break;
- case "fixed":
- size = size + "!";
- break;
- }
- suffix = "imageMogr2/thumbnail/" + size + crop_str + quality_str;
- break;
- }
- return url + "?" + suffix;
- }
- exports.$url = $url;
|