{"record":{"id":"aa71e3f90b1bb36d","repo":"tonhowtf/omniget","slug":"n-o-consegui-abrir-a-imagem","errorCode":null,"errorMessage":"não consegui abrir a imagem: {}","messagePattern":"não consegui abrir a imagem: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/tools/icon_pack.rs","lineNumber":171,"sourceCode":"        let png = png_bytes(&at(base, *size))?;\n        body.extend_from_slice(kind.as_slice());\n        body.extend_from_slice(&((png.len() + 8) as u32).to_be_bytes());\n        body.extend_from_slice(&png);\n    }\n    let mut out = Vec::with_capacity(body.len() + 8);\n    out.extend_from_slice(b\"icns\");\n    out.extend_from_slice(&((body.len() + 8) as u32).to_be_bytes());\n    out.extend_from_slice(&body);\n    Ok(out)\n}\n\n/// Um arquivo a gerar: o nome final e como produzir os bytes dele.\ntype IconJob<'a> = (String, Box<dyn Fn() -> anyhow::Result<Vec<u8>> + 'a>);\n\npub fn run(opts: &IconOptions, progress: &super::ProgressFn) -> anyhow::Result<IconResult> {\n    let inp = Path::new(&opts.input);\n    let src = image::open(inp)\n        .map_err(|e| anyhow!(\"não consegui abrir a imagem: {}\", e))?\n        .to_rgba8();\n    let source_size = (src.width(), src.height());\n    let base = squarify(&src, opts.padding_pct);\n    let bg = parse_hex(&opts.background);\n\n    let stem = inp\n        .file_stem()\n        .map(|s| s.to_string_lossy().to_string())\n        .unwrap_or_else(|| \"icone\".into());\n    let parent = if opts.output_dir.trim().is_empty() {\n        inp.parent().map(|p| p.to_path_buf()).unwrap_or_default()\n    } else {\n        PathBuf::from(opts.output_dir.trim())\n    };\n    let folder = parent.join(format!(\"{}-icons\", stem));\n    std::fs::create_dir_all(&folder)?;\n\n    let mut jobs: Vec<IconJob<'_>> = Vec::new();","sourceCodeStart":153,"sourceCodeEnd":189,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/icon_pack.rs#L153-L189","documentation":"Decode failure in icon_pack run: the user-selected image file could not be opened/decoded by the image crate (corrupt bytes, unsupported codec, or permission denied), so no icon variants can be generated from it.","triggerScenarios":"Thrown at src-tauri/omniget-core/src/core/tools/icon_pack.rs:171 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-export the image in a standard format (PNG/SVG rasterized to PNG)","Verify the file is not corrupt by opening it in an image viewer","Check file read permissions for the app process"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}