From 122948ee461295b0cda29bc23addb6a6c80ed2f0 Mon Sep 17 00:00:00 2001 From: Adam Gastineau Date: Wed, 20 Sep 2023 19:11:12 -0700 Subject: [PATCH] Fixed off by one error in image generation and decoding --- .gitignore | 4 +++- package-lock.json | 32 ++++++++++++++++---------------- src/create.js | 4 +++- src/extract.js | 2 +- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 40b878d..d284f09 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -node_modules/ \ No newline at end of file +node_modules/ +*.png +*.bin \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5e8620e..fef7483 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,9 +54,9 @@ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -259,6 +259,13 @@ "pngjs": "^3.3.3", "to-array-buffer": "^3.0.0", "utif": "^2.0.1" + }, + "dependencies": { + "jpeg-js": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", + "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==" + } } }, "image-encode": { @@ -278,13 +285,6 @@ "pxls": "^2.3.1", "to-array-buffer": "^3.0.0", "utif": "^2.0.1" - }, - "dependencies": { - "jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - } } }, "image-palette": { @@ -402,9 +402,9 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "jpeg-js": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", - "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==" + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, "jsbn": { "version": "0.1.1", @@ -514,9 +514,9 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "pxls": { "version": "2.3.2", diff --git a/src/create.js b/src/create.js index a622bd7..dfe09db 100644 --- a/src/create.js +++ b/src/create.js @@ -26,7 +26,9 @@ const create = async () => { byte = 0; } + // Brightness byte image[i / 2] = byte; + // Reserved byte image[i / 2 + 1] = 0; } @@ -39,7 +41,7 @@ const create = async () => { const prevColumn = i % width; const prevRow = Math.floor(i / width); - const row = width - prevColumn; + const row = width - 1 - prevColumn; const column = prevRow; rotatedImage[(row * height + column) * 2] = byte1; diff --git a/src/extract.js b/src/extract.js index 3231da1..78511b4 100644 --- a/src/extract.js +++ b/src/extract.js @@ -43,7 +43,7 @@ for (let i = 0; i < rgba.length / 4; i++) { const prevRow = Math.floor(i / width); const row = prevColumn; - const column = height - prevRow; + const column = height - 1 - prevRow; const outputPos = (row * height + column) * 4; rotatedImage[outputPos] = byte1;