Převod obrázků mezi formáty zní, jako by měl být jednoduchý — stačí změnit příponu, že? Ve skutečnosti ale tisíce uživatelů každý den narážejí při převodu obrázků na svých lokálních počítačích na záhadné chyby, poškozené výstupy a pády softwaru. Zatímco online nástroje jako GuruPDF zvládnou úplně stejné převody bezchybně během několika sekund.
Tento článek jde do hloubky u nejčastějších chyb při převodu obrázků na Windows, macOS a Linuxu, vysvětluje, proč vznikají, a ukazuje, jak se jim úplně vyhnout.
Nejběžnější formáty obrázků (a proč si spolu ne vždy rozumí)
Než se pustíme do chyb, pojďme si ujasnit formáty, které způsobují nejvíc problémů:
| Format | Full Name | Compression | Transparency | Typical Use |
|---|---|---|---|---|
| JPG/JPEG | Joint Photographic Experts Group | Ztrátová | Ne | Fotky, webové obrázky |
| PNG | Portable Network Graphics | Bezeztrátová | Ano | Snímky obrazovky, loga, grafika |
| WebP | Web Picture | Obojí | Ano | Moderní optimalizace pro web |
| HEIC/HEIF | High Efficiency Image Container | Ztrátová/Bezeztrátová | Ano | Fotky z iPhone/iPad (iOS 11+) |
| AVIF | AV1 Image File Format | Ztrátová/Bezeztrátová | Ano | Webový formát nové generace |
| SVG | Scalable Vector Graphics | N/A (vektor) | Ano | Ikony, ilustrace, loga |
| TIFF | Tagged Image File Format | Bezeztrátová | Ano | Tisk, skenování, archivace |
| BMP | Bitmap | Žádná | Ne | Starší formát Windows |
| GIF | Graphics Interchange Format | Bezeztrátová | 1-bit | Animace, jednoduchá grafika |
| EPS | Encapsulated PostScript | N/A (vektor) | Ne | Tiskový design, profesionální grafika |
| DJVU | DjVu | Ztrátová | Ne | Naskenované dokumenty, knihy |
Problém? Většina operačních systémů a vestavěných nástrojů nativně podporuje jen hrstku z nich. A právě tady chyby začínají.
Chyba #1: „Windows Photo Viewer Can't Open This Picture“ (HEIC/AVIF/WebP)
Kódy a zprávy, které se vám mohou zobrazit:
"Windows Photo Viewer can't open this picture because either Photo Viewer
doesn't support this file format, or you don't have the latest updates.""It looks like we don't support this file format."
— Microsoft Photos app"0xc00d5212: This item was encoded in a format that's not supported."Proč k tomu dochází: Windows 10/11 nativně nepodporují HEIC (výchozí formát fotek z iPhone od iOS 11) ani AVIF. Musíte si z Microsoft Store nainstalovat „HEIF Image Extensions“ (0,99 $) a „AV1 Video Extensions“. Podpora WebP byla přidána až ve Windows 10 verze 1809 a novější.
Pokus o lokální řešení: Nainstalovat balíčky kodeků, použít prohlížeče třetích stran nebo zkusit nástroje příkazové řádky jako ImageMagick:
magick convert input.heic output.jpgJenže ImageMagick vyžaduje instalaci dalších „delegates“ (libheif, libde265), což často končí chybou:
convert: delegate failed `"dwebp" -pam "%i" -o "%o"' @ error/delegate.c/InvokeDelegate/1911.convert: no decode delegate for this image format `HEIC' @ error/constitute.c/ReadImage/746.Snadné řešení: Nahrajte své soubory HEIC, AVIF nebo WebP do GuruPDF a jedním kliknutím je převeďte na JPG nebo PNG — bez kodeků, bez instalací, bez chyb.
Chyba #2: „No Decode Delegate“ — ImageMagick bez potřebných kodeků
Celá chybová hláška:
convert: no decode delegate for this image format `WEBP' @ error/constitute.c/ReadImage/746.convert: no decode delegate for this image format `SVG' @ error/constitute.c/ReadImage/746.convert: no decode delegate for this image format `EPS' @ error/constitute.c/ReadImage/746.Proč k tomu dochází: ImageMagick patří mezi nejoblíbenější nástroje pro práci s obrázky v příkazové řádce, ale ve výchozím stavu nemá dekodéry pro všechny formáty. Každý formát vyžaduje knihovnu „delegate“:
- WebP vyžaduje
libwebp - HEIC vyžaduje
libheif+libde265 - AVIF vyžaduje
libavif+dav1d - SVG vyžaduje
librsvgnebo Inkscape - EPS vyžaduje Ghostscript (
gs) - DJVU vyžaduje
djvulibre
Instalace na Windows je obzvlášť bolestivá — musíte stáhnout předkompilované DLL, dát je do správného adresáře a doufat, že se verze shodují.
Na macOS:
brew install imagemagick --with-librsvg --with-libheif --with-webpČasto selže s:
Error: invalid option: --with-librsvgProtože Homebrew změnil strukturu „formula“ a tyto volby byly odstraněny.
Na Linuxu (Ubuntu/Debian):
sudo apt install imagemagick libheif-dev libwebp-devStejně to může selhat, protože systémový ImageMagick byl zkompilovaný bez daného delegáta. Museli byste kompilovat ze zdroje:
./configure --with-heic=yes --with-webp=yes
make && sudo make installCož může trvat 10+ minut a může to být v konfliktu se systémovými balíčky.
Chyba #3: „Not a JPEG File: Starts With 0x89“ — špatná přípona souboru
Chybové zprávy:
Not a JPEG file: starts with 0x89 0x50Corrupt JPEG data: premature end of data segmentlibpng error: Not a PNG fileIHDR: CRC errorProč k tomu dochází: Někdo přejmenoval soubor PNG na .jpg (nebo naopak). Přípona neodpovídá skutečnému binárnímu obsahu. Bajty 0x89 0x50 jsou „magic number“ PNG (první bajty každého PNG jsou 89 50 4E 47). JPEG soubory začínají FF D8 FF.
Překvapivě často se to stává při:
- stahování obrázků z webu (servery někdy nastaví špatné hlavičky Content-Type)
- hromadném přejmenování souborů bez skutečného převodu
- e-mailových klientech nebo chatovacích aplikacích, které potichu mění přípony
Jak zjistit skutečný formát:
file mysterious-image.jpg
# Output: mysterious-image.jpg: PNG image data, 1920 x 1080, 8-bit/color RGBANa Windows (PowerShell):
Format-Hex -Path .\image.jpg -Count 4
# If you see 89 50 4E 47, it's actually a PNG
# If you see FF D8 FF, it's a real JPEGVýhoda online: GuruPDF automaticky rozpozná skutečný formát souboru bez ohledu na to, co říká přípona, a správně jej převede.
Chyba #4: Chyby při převodu v Python Pillow (PIL)
Běžné chybové zprávy:
PIL.UnidentifiedImageError: cannot identify image file 'photo.heic'OSError: cannot write mode RGBA as JPEGOSError: cannot write mode P as JPEGPIL.Image.DecompressionBombError: Image size (178956970 pixels) exceeds limit of 89478485 pixelsProč k tomu dochází: Knihovna Pillow v Pythonu je jasná volba pro programový převod obrázků, ale má výrazná omezení:
- Bez podpory HEIC bez
pillow-heif(samostatná instalace vyžadující systémové knihovny) - RGBA do JPEG selže, protože JPEG nepodporuje průhlednost — nejdřív musíte převést na RGB
- Paletový režim (P) do JPEG vyžaduje převod na RGB
- Velké obrázky spouštějí ochranu proti „decompression bomb“ (bezpečnostní funkce)
Typický „workaround“ kód, se kterým lidé bojují:
from PIL import Image
img = Image.open("photo.png")
# Handle transparency for JPEG output
if img.mode in ('RGBA', 'LA', 'P'):
background = Image.new('RGB', img.size, (255, 255, 255))
if img.mode == 'P':
img = img.convert('RGBA')
background.paste(img, mask=img.split()[-1])
img = background
img.save("photo.jpg", "JPEG", quality=95)To je spousta „boilerplate“ jen kvůli převodu jednoho obrázku. A stejně to bez dalších knihoven nezvládne HEIC, AVIF ani WebP.
Chyba #5: macOS Preview „Could Not Be Exported“
Chybové zprávy:
"The document 'image.webp' could not be exported as 'image.png'.""The file isn't compatible with QuickLook.""The document could not be opened. The file format is not supported."Proč k tomu dochází: macOS Preview.app podporuje slušný rozsah formátů, ale starší verze macOS (před Ventura) nativně nepodporují WebP ani AVIF. Dokonce i na novějších verzích se převod mezi některými kombinacemi formátů potichu nezdaří nebo vyprodukuje poškozený výstup.
Běžné chyby příkazu macOS sips:
sips -s format jpeg input.webp --out output.jpg
# Error: Unable to render input.webp as JPEG
# Error 4: no such operationsips -s format png input.svg --out output.png
# Error: Unable to render SVGNástroj sips (Scriptable Image Processing System) je součástí macOS, ale podporuje jen omezenou sadu formátů: JPEG, TIFF, PNG, GIF, BMP a PICT.
Chyba #6: Selhání převodu obrázků ve FFmpeg
Běžné chyby:
[image2 @ 0x...] Could not open file : output.webp
av_interleaved_write_frame(): Invalid argumentAvi/ASF stream 0 is not an image stream. Use -c:v png/mjpeg/... to encode it.[svg @ 0x...] Cannot determine type of input[heic @ 0x...] Unknown decoder 'heic'
Discarding frame which has a bad interlace typeProč k tomu dochází: FFmpeg je primárně nástroj na video a i když umí převody obrázků, vyžaduje konkrétní podporu kodeků při kompilaci. Mnoha systémově instalovaným verzím FFmpeg chybí podpora HEIC/AVIF/WebP.
Chyba #7: Chyby hromadného zpracování v GIMP
Chybové zprávy v konzoli Script-Fu:
Error: ( : 1) eval: unbound variable: file-webp-savebatch command experienced an execution error:
Error: Procedure 'file-heif-load' not found(gimp:12345): LibGfig-WARNING **: Bad path: /home/user/.gimp-2.10/gfigProč k tomu dochází: GIMP potřebuje pluginy pro novější formáty. Plugin pro WebP nemusí být nainstalovaný, podpora HEIF vyžaduje libheif a podpora AVIF vyžaduje GIMP 2.10.22+. Hromadné zpracování přes Script-Fu nebo Python-Fu přidává další vrstvu složitosti.
Chyba #8: „EXIF Data Lost“ — zničení metadat při převodu
Tohle není chybová hláška — jde o tichou ztrátu dat, které si spousta lidí všimne až příliš pozdě.
Co se ztratí:
- Nastavení fotoaparátu (clona, čas závěrky, ISO)
- GPS souřadnice (kde byla fotka pořízena)
- Datum a čas pořízení
- Informace o autorských právech
- Barevný profil (sRGB, Adobe RGB, ProPhoto RGB)
- Orientace (informace o otočení — vede k fotkám „na boku“)
Nástroje, které často odstraňují EXIF:
- Windows Paint (odstraní vše)
- mnoho online konvertorů (z „důvodů soukromí“, bez upozornění)
- ImageMagick (standardně odstraňuje, pokud to explicitně neřídíte pomocí
-strip) - Python Pillow (vyžaduje explicitní práci s EXIF přes
exif=img.info.get('exif', b''))
Problém s orientací je obzvlášť zrádný:
Warning: JPEG file has EXIF orientation tag but image data is not rotated.
Auto-rotating image based on EXIF orientation.Některé nástroje obrázek otočí, ale neaktualizují EXIF tag, což vede k dvojímu otočení v některých prohlížečích a správnému zobrazení v jiných.
Chyba #9: Problémy s barevným prostorem a ICC profily
Chybové zprávy:
lcms: not a valid ICC profilecolor profile 'sRGB IEC61966-2.1' is not compatible with 'CMYK'libpng warning: iCCP: known incorrect sRGB profileJCS_CMYK JPEG image passed to JFIF converterProč k tomu dochází: Profesionální obrázky často používají barevný prostor CMYK (pro tisk) nebo wide-gamut profily (Adobe RGB, ProPhoto RGB). Při převodu do webových formátů (které používají sRGB) bez správné správy barev vznikají vybledlé nebo přesaturované barvy.
Co uvidíte: Obrázek, který na obrazovce vypadá perfektně, se po převodu změní na neonově zelený nebo bahnitě hnědý. Nebo profesionální fotka úplně přijde o syté barvy.
Technický důvod: CMYK má 4 barevné kanály (Cyan, Magenta, Yellow, Key/Black), zatímco RGB má 3 (Red, Green, Blue). Naivní převod neaplikuje správnou barevnou transformaci, a výsledkem jsou výrazně nesprávné barvy.
Chyba #10: Pády „File Too Large“ nebo „Out of Memory“
Chybové zprávy:
java.lang.OutOfMemoryError: Java heap spaceTraceback: MemoryErrorFatal error: Allowed memory size of 134217728 bytes exhaustedconvert: cache resources exhausted `input.tiff' @ error/cache.c/OpenPixelCache/3945.convert: width or height exceeds limit `input.tiff' @ error/cache.c/OpenPixelCache/3912.Proč k tomu dochází: Soubor TIFF o velikosti 100 MB při 300 DPI může mít rozlišení 8000×6000 pixelů. V paměti bez komprese je to:
- 8000 × 6000 × 4 bajty (RGBA) = 192 MB RAM pro jediný obrázek
- zpracování (změna velikosti, převod formátu) vyžaduje 2–3× tolik
- dávkový převod 10 takových obrázků může spotřebovat 4–6 GB RAM
Většina desktopových aplikací a skriptů obrázky nezpracovává „streamově“ — načte celý obrázek do paměti najednou.
Výchozí limity v policy ImageMagick bývají příliš restriktivní:
# /etc/ImageMagick-6/policy.xml
<policy domain="resource" name="memory" value="256MiB"/>
<policy domain="resource" name="disk" value="1GiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>Možná budete muset upravit policy.xml a limity zvýšit, ale to vyžaduje administrátorský přístup a porozumění konfiguraci XML.
Chyba #11: Převod SVG na rastrový obrázek — noční můry s „renderingem textu“
Běžné problémy:
Pango-WARNING **: failed to choose a font, expect ugly outputrsvg-convert: error: Error reading SVG: "Unexpected end of XML input"cairo-WARNING: cairo_surface_destroy: Cannot modify an already-finished surfaceProč k tomu dochází: SVG soubory často odkazují na fonty, které v systému nemáte nainstalované. Při převodu do PNG nebo JPG renderovací engine dosadí výchozí font a úplně se změní vzhled textu. Přechody, filtry a vložené obrázky v SVG přidávají další možné body selhání.
Příklad problému s fonty:
Vaše SVG používá font-family: "Helvetica Neue", ale váš Linux server má pouze Liberation Sans. Výstup vypadá „jemně“ špatně — jiné rozestupy písmen, jiné řezy, posunutý text.
Proč online převod prostě funguje (když lokální nástroje ne)
Po všech těch chybách vás možná napadne: proč online nástroje zvládají tyto převody tak hladce?
1. Předkonfigurované prostředí: Online nástroje jako GuruPDF běží na serverech, kde jsou všechny kodeky, knihovny a delegáti předem nainstalované a správně nakonfigurované. Žádné chybějící libheif, žádná špatná politika ImageMagick, žádný chybějící Ghostscript.
2. Automatická detekce formátu: Server pozná skutečný formát souboru podle binární hlavičky (magic bytes), ne podle přípony. PNG zamaskované jako .jpg? Žádný problém.
3. Správná správa barev: Nástroje na straně serveru korektně zpracují ICC profily a převody barevných prostorů, takže zachovají vzhled obrázků.
4. Správa paměti: Cloudové servery mají dostatek prostředků a zpracovávají obrázky efektivně, takže zvládnou velké TIFF soubory i skeny ve vysokém rozlišení bez nedostatku paměti.
5. Vždy aktuální: Podpora nových formátů jako AVIF a HEIC se přidává na serveru. Na počítači nemusíte nic aktualizovat.
6. Bez instalačních bolestí: Žádná Python prostředí, žádný Homebrew, žádné DLL peklo, žádné úpravy policy.xml, žádná kompilace ze zdroje.
Nástroje GuruPDF pro převod obrázků
GuruPDF podporuje širokou škálu převodů formátů obrázků — zdarma a přímo v prohlížeči:
Z fotek a obrázků:
- JPG na PNG, JPG na WebP, JPG na SVG, JPG na PDF, JPG na GIF
- PNG na JPG, PNG na WebP, PNG na SVG, PNG na PDF, PNG na GIF
- HEIC na JPG, HEIC na PNG, HEIC na PDF
- AVIF na JPG, AVIF na PNG, AVIF na PDF
- WebP na JPG, WebP na PNG, WebP na GIF, WebP na PDF
- TIFF na JPG, TIFF na PNG, TIFF na PDF
- BMP na JPG, BMP na PNG, BMP na PDF
- GIF na PNG, GIF na WebP, GIF na PDF
Vektorové a specializované formáty:
Nástroje pro optimalizaci:
- Změnit velikost obrázku (libovolný formát)
- Optimalizovat JPG, Optimalizovat PNG, Optimalizovat GIF
- PDF ve stupních šedi
Závěr: Přestaňte bojovat se svým počítačem
Pokud jste někdy strávili 30 minut snahou nainstalovat libheif na Windows, nebo jste přemýšleli, proč váš CMYK TIFF po převodu do JPG zezelenal, nebo vás zmátla chyba „no decode delegate“ — nejste sami. Převod obrázků by měl být jednoduchý, ale lokální nástroje ho zbytečně komplikují.
Až příště budete potřebovat převést obrázek, zkuste ho nejdřív nahrát do GuruPDF. Zvládne každý formát, zachová kvalitu a funguje v jakémkoli prohlížeči na jakémkoli zařízení. Žádné instalace, žádné chybové kódy, žádná frustrace.
Váš čas je lepší věnovat skutečné práci než ladění delegátů ImageMagick.