From 913e2e06665d0b88e6eab1207e68ab8349a52ae3 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 7 Apr 2021 19:31:46 -0500 Subject: [PATCH] Scale super large images down so that they can be drawn on the canvas --- iOS/Resources/main_ios.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/iOS/Resources/main_ios.js b/iOS/Resources/main_ios.js index 2de36d94b..8c62081ee 100644 --- a/iOS/Resources/main_ios.js +++ b/iOS/Resources/main_ios.js @@ -35,11 +35,21 @@ class ImageViewer { var canvas = document.createElement("canvas"); var pixelRatio = window.devicePixelRatio; + var totalPixels = 0; do { canvas.width = this.img.naturalWidth * pixelRatio; canvas.height = this.img.naturalHeight * pixelRatio; + totalPixels = canvas.width * canvas.height; pixelRatio--; - } while (pixelRatio > 0 && canvas.width * canvas.height > 16777216) + } while (pixelRatio > 0 && totalPixels > 16777216) + + // If the totalPixels is still too big to draw on a canvas, scale it down + if (totalPixels > 16777216) { + var adjustment = 1 - ((totalPixels - 16777216) / totalPixels); + canvas.width = canvas.width * adjustment; + canvas.height = canvas.height * adjustment; + } + canvas.getContext("2d").drawImage(this.img, 0, 0, canvas.width, canvas.height); const rect = this.img.getBoundingClientRect();