From ff1da6ebd96a1e5e054e6c62df48402c04bcdbe4 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 24 Aug 2021 23:03:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=9C=8D=E5=8A=A1=20&=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96splitImage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 33 ++++++++++++++++++++++++++------- editor-mobile.html | 2 +- editor.html | 2 +- 启动服务.exe | Bin 56320 -> 56832 bytes 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 9036c0d2..df10f614 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -755,6 +755,27 @@ editor.prototype.drawInitData = function (icons) { }); var imgNames = ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48", "autotile"]; + var splitCanvas = document.createElement('canvas'); + var splitCtx = splitCanvas.getContext('2d'); + splitCtx.imageSmoothingEnabled = false; + + var splitImage = function (image, width, height) { + if (image.width == width && image.height == height) { + return [image]; + } + var ans = []; + for (var j = 0; j < image.height; j += h) { + var h = Math.min(height, image.height - j); + splitCanvas.width = width; + splitCanvas.height = h; + core.drawImage(splitCtx, image, 0, j, width, h, 0, 0, width, h); + var data = new Image(); + data.src = splitCanvas.toDataURL("image/png"); + ans.push(data); + } + return ans; + } + for (var ii = 0; ii < imgNames.length; ii++) { var img = imgNames[ii], tempy = 0; if (img == 'autotile') { @@ -862,9 +883,8 @@ editor.prototype.drawInitData = function (icons) { canvas.width = 32; canvas.height = images[img].height + 64; canvas.getContext('2d').drawImage(images[img], 0, 64); - var subimgs = core.splitImage(canvas, 32, editor.uivalues.foldPerCol * 32); - var frames = images[img].width / 32; - for (var i = 0; i < subimgs.length; i+=frames) { + var subimgs = splitImage(canvas, 32, editor.uivalues.foldPerCol * 32); + for (var i = 0; i < subimgs.length; i++) { drawImage(subimgs[i], nowx, 0, img); nowx += 32; } @@ -880,7 +900,7 @@ editor.prototype.drawInitData = function (icons) { var tempx = editor.uivalues.folded ? 32 : 96; for (var im in autotiles) { var tempy = editor.uivalues.folded ? 32 : autotiles[im].height; - var subimgs = core.splitImage(autotiles[im], tempx, tempy); + var subimgs = splitImage(autotiles[im], tempx, tempy); drawImage(subimgs[0], nowx, nowy, img); nowy += tempy; } @@ -890,9 +910,8 @@ editor.prototype.drawInitData = function (icons) { if (editor.uivalues.folded) { // --- 单列 & 折行 var per_height = img.endsWith('48') ? 48 : 32; - var subimgs = core.splitImage(images[img], 32, editor.uivalues.foldPerCol * per_height); - var frames = images[img].width / 32; - for (var i = 0; i < subimgs.length; i+=frames) { + var subimgs = splitImage(images[img], 32, editor.uivalues.foldPerCol * per_height); + for (var i = 0; i < subimgs.length; i++) { drawImage(subimgs[i], nowx, 0, img); nowx += 32; } diff --git a/editor-mobile.html b/editor-mobile.html index f27050ba..e40fe7d5 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -348,7 +348,7 @@ - diff --git a/editor.html b/editor.html index 3ff596d3..282440e2 100644 --- a/editor.html +++ b/editor.html @@ -307,7 +307,7 @@
- diff --git a/启动服务.exe b/启动服务.exe index 7c532394cae0cdeb32ec6ffa6f6bd84b1fc9ede7..5234a1e9baf261938d585f6e37bee07c95b91d90 100644 GIT binary patch delta 13543 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 delta 12873 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