diff --git a/src/codecs/rotate/processor.ts b/src/codecs/rotate/processor.ts index 0f795e51c..30bac75c4 100644 --- a/src/codecs/rotate/processor.ts +++ b/src/codecs/rotate/processor.ts @@ -11,7 +11,7 @@ export async function rotate( // Number of wasm memory pages (รก 64KiB) needed to store the image twice. const bytesPerImage = data.width * data.height * 4; - const numPagesNeeded = Math.ceil(bytesPerImage * 2 / (64 * 1024) + 4); + const numPagesNeeded = Math.ceil((bytesPerImage * 2 + 4) / (64 * 1024)); // Only count full pages, just to be safe. const numPagesAvailable = Math.floor(instance.exports.memory.buffer.byteLength / (64 * 1024)); const additionalPagesToAllocate = numPagesNeeded - numPagesAvailable; @@ -20,13 +20,13 @@ export async function rotate( instance.exports.memory.grow(additionalPagesToAllocate); } const view = new Uint8ClampedArray(instance.exports.memory.buffer); - view.set(data.data); + view.set(data.data, 4); instance.exports.rotate(data.width, data.height, opts.rotate); const flipDimensions = opts.rotate % 180 !== 0; return new ImageData( - view.slice(bytesPerImage, bytesPerImage * 2), + view.slice(bytesPerImage + 4, bytesPerImage * 2 + 4), flipDimensions ? data.height : data.width, flipDimensions ? data.width : data.height, );