50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
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;
|