jimp icon indicating copy to clipboard operation
jimp copied to clipboard

Error: marker was not found

Open krishnaTORQUE opened this issue 3 years ago • 5 comments

Expected Behavior

Image processing successfully

Current Behavior

Error: marker was not found

Failure Information (for bugs)

bug

Steps to Reproduce

try {
    let img = await jimp.read(imagePath)
    await img.cover(300, 300)
    await img.quality(80)
    await img.rgba(false)
    await img.background(0xffffffff)

    await img.writeAsync(savePath + imgName)

    console.log('success')
  } catch (e) {
    console.log(e)
  }

Context

its not happening all the time. sometime the error occur, sometime not with the same image.

  • Jimp Version: 0.16.1
  • Operating System: ubuntu 20.04
  • Node version: 12.18.3

Failure Logs

Error: marker was not found at decodeScan (/mnt/KrishnaTorque/Projects/NodeJS/02/dxtrez/src/node_modules/jpeg-js/lib/decoder.js:344:15) at constructor.parse (/mnt/KrishnaTorque/Projects/NodeJS/02/dxtrez/src/node_modules/jpeg-js/lib/decoder.js:804:29) at Object.decode [as image/jpeg] (/mnt/KrishnaTorque/Projects/NodeJS/02/dxtrez/src/node_modules/jpeg-js/lib/decoder.js:1096:11) at Jimp.call (/mnt/KrishnaTorque/Projects/NodeJS/02/dxtrez/src/node_modules/@jimp/core/src/utils/image-bitmap.js:165:21) at Jimp.parseBitmap (/mnt/KrishnaTorque/Projects/NodeJS/02/dxtrez/src/node_modules/@jimp/core/src/index.js:400:17) at /mnt/KrishnaTorque/Projects/NodeJS/02/dxtrez/src/node_modules/@jimp/core/src/index.js:344:14 at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3) { methodName: 'constructor' }

krishnaTORQUE avatar Aug 30 '20 10:08 krishnaTORQUE

The same is happening to me.

kvintessents avatar Oct 14 '20 15:10 kvintessents

I am facing the same issue

ajayKomirishetty avatar Feb 24 '21 18:02 ajayKomirishetty

For anyone facing the same issue, I found a workaround which is simply re-trying it multiple times. If let's say it happens 1 out of 100 times (99% success rate) then with a second re-try it happens 1 out of 10000 times in total, etc. This code retries 5 times.

async function retryResize(options, retries = 0) {
    let { imagePath, size, quality = 60, maxRetries = 5 } = options;

    let image = null;
    try {
        image = await Jimp.read(imagePath);
        await image.resize(size, Jimp.AUTO);
        await image.quality(quality);
    } catch (e) {
        if (retries >= maxRetries) {
            throw e;
        }

        image = await retryResize(options, retries++);
    }

    return image;
}

Notice that this function does still does throw when it fails the 5th time, so make sure you deal with that - although I have yet to see it actually happen.

amiran-gorgazjan avatar Mar 01 '21 10:03 amiran-gorgazjan

same issue.

rendomnet avatar May 30 '21 10:05 rendomnet

Same issue

stefanleoussis avatar Jan 20 '22 16:01 stefanleoussis