Skip to content

Commit 0176256

Browse files
committed
Update Picviewer CE+.user.js
1 parent e5adad6 commit 0176256

1 file changed

Lines changed: 27 additions & 8 deletions

File tree

Picviewer CE+/Picviewer CE+.user.js

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// @description:zh-TW 線上看圖工具,支援圖片翻轉、旋轉、縮放、彈出大圖、批量儲存
1111
// @description:pt-BR Poderosa ferramenta de visualização de imagens on-line, que pode pop-up/dimensionar/girar/salvar em lote imagens automaticamente
1212
// @description:ru Мощный онлайн-инструмент для просмотра изображений, который может автоматически отображать/масштабировать/вращать/пакетно сохранять изображения
13-
// @version 2024.1.28.1
13+
// @version 2024.2.2.1
1414
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAV1BMVEUAAAD////29vbKysoqKioiIiKysrKhoaGTk5N9fX3z8/Pv7+/r6+vk5OTb29vOzs6Ojo5UVFQzMzMZGRkREREMDAy4uLisrKylpaV4eHhkZGRPT08/Pz/IfxjQAAAAgklEQVQoz53RRw7DIBBAUb5pxr2m3/+ckfDImwyJlL9DDzQgDIUMRu1vWOxTBdeM+onApENF0qHjpkOk2VTwLVEF40Kbfj1wK8AVu2pQA1aBBYDHJ1wy9Cf4cXD5chzNAvsAnc8TjoLAhIzsBao9w1rlVTIvkOYMd9nm6xPi168t9AYkbANdajpjcwAAAABJRU5ErkJggg==
1515
// @namespace https://github.com/hoothin/UserScripts
1616
// @homepage https://www.hoothin.com
@@ -11774,20 +11774,31 @@ ImgOps | https://imgops.com/#b#`;
1177411774
}
1177511775
} else GM_fetch = fetch;
1177611776

11777+
var canvas = document.createElement('CANVAS');
11778+
canvas.style.display = "none";
11779+
document.body.appendChild(canvas);
11780+
if (typeof canvas.getContext === 'undefined') {
11781+
document.body.removeChild(canvas);
11782+
canvas = null;
11783+
} else {
11784+
document.body.removeChild(canvas);
11785+
}
1177711786
function icon2Base64(icon, content, iconStyle) {
11778-
if (!content) return false;
11779-
var canvas = document.createElement("canvas");
11787+
if (!content || !canvas) return false;
1178011788
let size = Math.min((icon.clientWidth || icon.offsetWidth), (icon.clientHeight || icon.offsetHeight));
1178111789
if (!size) return false;
1178211790
canvas.width = size;
1178311791
canvas.height = size;
11792+
document.body.appendChild(canvas);
1178411793
var ctx = canvas.getContext("2d");
11794+
ctx.clearRect(0, 0, canvas.width, canvas.height);
1178511795
ctx.font = iconStyle.font || (iconStyle.fontSize + " " + iconStyle.fontFamily);
1178611796
ctx.strokeStyle = iconStyle.color || "black";
1178711797
ctx.fillStyle = iconStyle.color || "black";
1178811798
ctx.textBaseline = "top";
1178911799
let metrics = ctx.measureText(content);
1179011800
ctx.fillText(content, (canvas.width - metrics.width) / 2, (canvas.height - parseInt(iconStyle.fontSize)) / 2);
11801+
document.body.removeChild(canvas);
1179111802
return canvas.toDataURL("image/png");
1179211803
}
1179311804

@@ -11894,18 +11905,21 @@ ImgOps | https://imgops.com/#b#`;
1189411905
};
1189511906
function dataURLToCanvas(dataurl, cb){
1189611907
if(!dataurl)return cb(null);
11897-
var canvas = document.createElement('CANVAS');
11908+
document.body.appendChild(canvas);
1189811909
var ctx = canvas.getContext('2d');
1189911910
var img = new Image();
1190011911
img.setAttribute("crossOrigin","anonymous");
1190111912
img.onload = function(){
1190211913
canvas.width = img.width;
1190311914
canvas.height = img.height;
11915+
ctx.clearRect(0, 0, canvas.width, canvas.height);
1190411916
ctx.drawImage(img, 0, 0);
1190511917
cb(canvas);
11918+
document.body.removeChild(canvas);
1190611919
};
1190711920
img.onerror = function(){
1190811921
cb(null);
11922+
document.body.removeChild(canvas);
1190911923
};
1191011924
img.src = dataurl;
1191111925
}
@@ -11927,7 +11941,7 @@ ImgOps | https://imgops.com/#b#`;
1192711941
onload: function(d) {
1192811942
let blob = d.response;
1192911943
let ext = blob.type.replace(/.*image\/(\w+).*/, "$1");
11930-
if (ext == "webp" || forcePng) {
11944+
if (canvas && (ext == "webp" || forcePng)) {
1193111945
var self = this;
1193211946
var a = new FileReader();
1193311947
a.readAsDataURL(blob);
@@ -14970,7 +14984,7 @@ ImgOps | https://imgops.com/#b#`;
1497014984
}
1497114985
});
1497214986
}
14973-
if(/^data:/.test(imgSrc) || imgSrc.split("/")[2]==document.domain){
14987+
if(canvas && (/^data:/.test(imgSrc) || imgSrc.split("/")[2] == document.domain)){
1497414988
self.dataURLToCanvas(imgSrc, canvas=>{
1497514989
self.showTips("Downloading "+(downloaded+1)+"/"+len, 1000000);
1497614990
if(!canvas){
@@ -15402,18 +15416,21 @@ ImgOps | https://imgops.com/#b#`;
1540215416
},
1540315417
dataURLToCanvas:function (dataurl, cb){
1540415418
if(!dataurl)return cb(null);
15405-
var canvas = document.createElement('CANVAS');
15419+
document.body.appendChild(canvas);
1540615420
var ctx = canvas.getContext('2d');
1540715421
var img = new Image();
1540815422
img.setAttribute("crossOrigin","anonymous");
1540915423
img.onload = function(){
1541015424
canvas.width = img.width;
1541115425
canvas.height = img.height;
15426+
ctx.clearRect(0, 0, canvas.width, canvas.height);
1541215427
ctx.drawImage(img, 0, 0);
1541315428
cb(canvas);
15429+
document.body.removeChild(canvas);
1541415430
};
1541515431
img.onerror = function(){
1541615432
cb(null);
15433+
document.body.removeChild(canvas);
1541715434
};
1541815435
img.src = dataurl;
1541915436
},
@@ -24601,11 +24618,13 @@ ImgOps | https://imgops.com/#b#`;
2460124618
};
2460224619

2460324620
function drawTobase64(img){
24604-
let canvas = document.createElement('CANVAS');
24621+
document.body.appendChild(canvas);
2460524622
canvas.width = img.naturalWidth || img.width;
2460624623
canvas.height = img.naturalHeight || img.height;
2460724624
let ctx = canvas.getContext('2d');
24625+
ctx.clearRect(0, 0, canvas.width, canvas.height);
2460824626
ctx.drawImage(img, 0, 0);
24627+
document.body.removeChild(canvas);
2460924628
return canvas.toDataURL("image/png");
2461024629
}
2461124630

0 commit comments

Comments
 (0)