class ArtImage { constructor(url) { this.url = url; //原图路径 } get compressionUrl() { return formatCompression(this.url); } get previewUrl() { return formatPreview(this.url); } } function formatCompression(url) { if (!url) return; if (url.indexOf('blob:') !== -1) return url; //本地文件流直接放行 if (url.indexOf('/compression/') !== -1) { url = url.replace('/compression/', '/'); } if (url.indexOf('/preview/') !== -1) { url = url.replace('/preview/', '/'); } let imgSrc = url; let splitList = imgSrc.split('/'); let fileName = splitList[splitList.length - 1]; fileName = fileName.split('.')[0] + '.jpg'; //图片服务压缩过的图片统一都是jpg格式,因此这里需要更好图片后缀 splitList.pop(); //移除掉文件名部分 return splitList.join('/') + '/compression/' + fileName; } //转化预览图路径 function formatPreview(url) { if (!url) return; if (url.indexOf('blob:') !== -1) return url; //本地文件流直接放行 if (url.indexOf('/preview/') !== -1) return url; if (url.indexOf('/compression/') !== -1) { url = url.replace('/compression/', '/'); } let imgSrc = url; let splitList = imgSrc.split('/'); let fileName = splitList[splitList.length - 1]; fileName = fileName.split('.')[0] + '.jpg'; //图片服务压缩过的图片统一都是jpg格式,因此这里需要更好图片后缀 splitList.pop(); //移除掉文件名部分 return splitList.join('/') + '/preview/' + fileName; } export default ArtImage;