{"record":{"id":"7fa43d1ad519a555","repo":"gchq/CyberChef","slug":"error-converting-image-format-err","errorCode":null,"errorMessage":"Error converting image format. (${err})","messagePattern":"Error converting image format\\. \\((.+?)\\)","errorType":"exception","errorClass":"OperationError","httpStatus":null,"severity":"error","filePath":"src/core/operations/ConvertImageFormat.mjs","lineNumber":114,"sourceCode":"                case JimpMime.jpeg:\n                    buffer = await image.getBuffer(mime, {\n                        quality: jpegQuality,\n                    });\n                    break;\n                case JimpMime.png:\n                    buffer = await image.getBuffer(mime, {\n                        filterType: pngFilterMap[pngFilterType],\n                        deflateLevel: pngDeflateLevel,\n                    });\n                    break;\n                default:\n                    buffer = await image.getBuffer(mime);\n                    break;\n            }\n\n            return buffer.buffer;\n        } catch (err) {\n            throw new OperationError(`Error converting image format. (${err})`);\n        }\n    }\n\n    /**\n     * Displays the converted image using HTML for web apps\n     *\n     * @param {ArrayBuffer} data\n     * @returns {html}\n     */\n    present(data) {\n        if (!data.byteLength) return \"\";\n        const dataArray = new Uint8Array(data);\n\n        const type = isImage(dataArray);\n        if (!type) {\n            throw new OperationError(\"Invalid file type.\");\n        }\n","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/gchq/CyberChef/blob/4290ea753912378913b1f3f54e0fc5720afeda5d/src/core/operations/ConvertImageFormat.mjs#L96-L132","documentation":"Convert Image Format's transcode step calls image.getBuffer(mime, options) for the selected target format (with jpeg quality, PNG filter/deflate settings, or defaults). Any encode failure is caught and re-thrown as 'Error converting image format.' Causes include an unsupported target format, out-of-range encoder options, or source content the target codec cannot represent.","triggerScenarios":"Target format not supported by the bundled Jimp; jpegQuality outside 1–100; PNG deflateLevel/filterType invalid; encoding a source (e.g. with alpha) into a format that can't represent it; CMYK source into JPEG.","commonSituations":"Misconfigured encoder arguments; Jimp version differences in codec support; edge-case source images.","solutions":["Choose a well-supported target format (PNG or JPEG).","Keep jpegQuality within 1–100 and PNG deflate/filter at defaults unless you know the valid ranges.","If conversion fails, fall back to PNG (lossless, broad support) and retry.","Check the bundled Jimp version supports the chosen output codec."],"exampleFix":"// before: jpegQuality passed as 0 or >100\nconst args = [..., 0, ...];\n// after\nconst args = [..., 85, ...]; // valid JPEG quality","handlingStrategy":"try-catch","validationCode":"function validEncodeArgs(format, jpegQuality, pngDeflateLevel) {\n  if (!format) return false;\n  if (format === \"JPEG\" && !(jpegQuality >= 1 && jpegQuality <= 100)) return false;\n  if (format === \"PNG\" && !(Number.isInteger(pngDeflateLevel) && pngDeflateLevel >= 0 && pngDeflateLevel <= 9)) return false;\n  return true;\n}\nif (!validEncodeArgs(format, jpegQuality, pngDeflateLevel)) {\n  throw new Error(\"Invalid encoder arguments for target format.\");\n}","typeGuard":"function isJpegQuality(v) {\n  return typeof v === \"number\" && v >= 1 && v <= 100;\n}","tryCatchPattern":"try {\n  result = await convertImageFormat.run(input, args);\n} catch (err) {\n  if (/Error converting image format/.test(err.message)) {\n    // Encode failed: try PNG with defaults as a broadly-supported fallback.\n  }\n  throw err;\n}","preventionTips":["Prefer PNG or JPEG as the target format for broadest codec support.","Keep jpegQuality in 1–100 and PNG deflate/filter at defaults unless you know valid ranges.","After a Jimp upgrade, re-confirm your target formats still encode."],"tags":["cyberchef","image","jimp","encode","operation-error"],"backgroundTag":null,"analyzedSha":"4290ea753912378913b1f3f54e0fc5720afeda5d","analyzedAt":"2026-08-13T06:05:50.210Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}