Konwertowanie obrazów między formatami brzmi jak coś prostego — wystarczy zmienić rozszerzenie, prawda? W rzeczywistości tysiące użytkowników każdego dnia wpada na niejasne błędy, uszkodzone wyniki i awarie programów podczas próby konwersji obrazów na swoich komputerach. Tymczasem narzędzia online, takie jak GuruPDF, wykonują dokładnie te same konwersje bezbłędnie w kilka sekund.
W tym artykule szczegółowo omawiamy najczęstsze błędy konwersji obrazów, z jakimi ludzie spotykają się w systemach Windows, macOS i Linux, wyjaśniamy, dlaczego się pojawiają, oraz pokazujemy, jak całkowicie ich uniknąć.
Najpopularniejsze formaty obrazów (i dlaczego nie zawsze się dogadują)
Zanim przejdziemy do błędów, przyjrzyjmy się formatom, które sprawiają najwięcej problemów:
| Format | Pełna nazwa | Kompresja | Przezroczystość | Typowe zastosowanie |
|---|---|---|---|---|
| JPG/JPEG | Joint Photographic Experts Group | Stratna | Nie | Zdjęcia, obrazy do internetu |
| PNG | Portable Network Graphics | Bezstratna | Tak | Zrzuty ekranu, logotypy, grafiki |
| WebP | Web Picture | Obie | Tak | Nowoczesna optymalizacja dla WWW |
| HEIC/HEIF | High Efficiency Image Container | Stratna/Bezstratna | Tak | Zdjęcia z iPhone/iPad (iOS 11+) |
| AVIF | AV1 Image File Format | Stratna/Bezstratna | Tak | Format WWW nowej generacji |
| SVG | Scalable Vector Graphics | N/A (wektor) | Tak | Ikony, ilustracje, logotypy |
| TIFF | Tagged Image File Format | Bezstratna | Tak | Druk, skanowanie, archiwizacja |
| BMP | Bitmap | Brak | Nie | Starszy format Windows |
| GIF | Graphics Interchange Format | Bezstratna | 1-bit | Animacje, proste grafiki |
| EPS | Encapsulated PostScript | N/A (wektor) | Nie | Projekty do druku, grafika profesjonalna |
| DJVU | DjVu | Stratna | Nie | Zeskanowane dokumenty, książki |
Problem? Większość systemów operacyjnych i narzędzi wbudowanych obsługuje natywnie tylko kilka z nich. I tu zaczynają się błędy.
Błąd #1: „Windows Photo Viewer Can't Open This Picture” (HEIC/AVIF/WebP)
Kody i komunikaty błędów, które możesz zobaczyć:
"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."Dlaczego tak się dzieje: Windows 10/11 nie obsługuje natywnie HEIC (domyślny format zdjęć z iPhone od iOS 11) ani AVIF. Trzeba zainstalować „HEIF Image Extensions” (0,99 USD) oraz „AV1 Video Extensions” ze sklepu Microsoft Store. Obsługa WebP została dodana dopiero w Windows 10 w wersji 1809 i nowszych.
Lokalna próba naprawy: instalacja paczek kodeków, użycie zewnętrznych przeglądarek albo narzędzi wiersza poleceń, takich jak ImageMagick:
magick convert input.heic output.jpgAle ImageMagick wymaga doinstalowania dodatkowych delegate’ów (libheif, libde265), co często kończy się błędem:
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.Proste rozwiązanie: prześlij pliki HEIC, AVIF lub WebP do GuruPDF i przekonwertuj je do JPG lub PNG jednym kliknięciem — bez kodeków, bez instalacji, bez błędów.
Błąd #2: „No Decode Delegate” — brakujące kodeki w ImageMagick
Pełny komunikat błędu:
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.Dlaczego tak się dzieje: ImageMagick to jedno z najpopularniejszych narzędzi do obrazów w wierszu poleceń, ale nie zawiera od razu dekoderów dla wszystkich formatów. Każdy format wymaga biblioteki „delegate”:
- WebP wymaga
libwebp - HEIC wymaga
libheif+libde265 - AVIF wymaga
libavif+dav1d - SVG wymaga
librsvglub Inkscape - EPS wymaga Ghostscript (
gs) - DJVU wymaga
djvulibre
Instalowanie tego w Windows jest szczególnie uciążliwe — trzeba pobrać wstępnie skompilowane DLL, umieścić je we właściwym katalogu i liczyć, że wersje będą kompatybilne.
W macOS:
brew install imagemagick --with-librsvg --with-libheif --with-webpCzęsto kończy się błędem:
Error: invalid option: --with-librsvgPonieważ Homebrew zmienił strukturę formuł i te opcje zostały usunięte.
W Linux (Ubuntu/Debian):
sudo apt install imagemagick libheif-dev libwebp-devMoże nadal nie zadziałać, bo systemowy ImageMagick został skompilowany bez delegate’a. Trzeba skompilować ze źródeł:
./configure --with-heic=yes --with-webp=yes
make && sudo make installCo może zająć ponad 10 minut i powodować konflikty z pakietami systemowymi.
Błąd #3: „Not a JPEG File: Starts With 0x89” — błędne rozszerzenie pliku
Komunikaty błędów:
Not a JPEG file: starts with 0x89 0x50Corrupt JPEG data: premature end of data segmentlibpng error: Not a PNG fileIHDR: CRC errorDlaczego tak się dzieje: ktoś zmienił nazwę pliku PNG na .jpg (albo odwrotnie). Rozszerzenie nie odpowiada rzeczywistej zawartości binarnej. Bajty 0x89 0x50 to magic number PNG (pierwsze bajty każdego pliku PNG to 89 50 4E 47). Pliki JPEG zaczynają się od FF D8 FF.
Zdarza się to zaskakująco często, gdy:
- pobierasz obrazy z internetu (serwery czasem ustawiają błędne nagłówki Content-Type)
- masowo zmieniasz nazwy plików bez faktycznej konwersji
- klient poczty lub komunikator po cichu zmienia rozszerzenia
Jak rozpoznać prawdziwy format:
file mysterious-image.jpg
# Output: mysterious-image.jpg: PNG image data, 1920 x 1080, 8-bit/color RGBAW 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 JPEGPrzewaga online: GuruPDF automatycznie wykrywa faktyczny format pliku niezależnie od tego, co mówi rozszerzenie, i konwertuje go poprawnie.
Błąd #4: Błędy konwersji w Python Pillow (PIL)
Częste komunikaty błędów:
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 pixelsDlaczego tak się dzieje: biblioteka Pillow w Pythonie to standard do programistycznej konwersji obrazów, ale ma istotne ograniczenia:
- Brak obsługi HEIC bez
pillow-heif(osobna instalacja wymagająca bibliotek systemowych) - RGBA do JPEG nie działa, bo JPEG nie obsługuje przezroczystości — najpierw trzeba przekonwertować do RGB
- Tryb palety (P) do JPEG wymaga konwersji do RGB
- Duże obrazy uruchamiają ochronę przed „decompression bomb” (funkcja bezpieczeństwa)
Typowy kod obejścia, z którym ludzie się męczą:
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 mnóstwo boilerplate’u, żeby przekonwertować jeden obraz. A i tak nie obsłuży HEIC, AVIF ani WebP bez dodatkowych bibliotek.
Błąd #5: macOS Preview — błędy „Could Not Be Exported”
Komunikaty błędów:
"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."Dlaczego tak się dzieje: macOS Preview.app obsługuje całkiem sporo formatów, ale starsze wersje macOS (przed Ventura) nie wspierają natywnie WebP ani AVIF. Nawet w nowszych wersjach konwersja między niektórymi kombinacjami formatów potrafi „po cichu” się nie udać albo dać uszkodzony wynik.
Typowe błędy polecenia 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 SVGNarzędzie sips (Scriptable Image Processing System) jest wbudowane w macOS, ale obsługuje ograniczony zestaw formatów: JPEG, TIFF, PNG, GIF, BMP oraz PICT.
Błąd #6: Niepowodzenia konwersji obrazów w FFmpeg
Częste błędy:
[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 typeDlaczego tak się dzieje: FFmpeg to przede wszystkim narzędzie wideo. Choć potrafi konwertować obrazy, wymaga odpowiedniej obsługi kodeków skompilowanej w programie. Wiele wersji FFmpeg instalowanych z systemu nie ma wsparcia dla HEIC/AVIF/WebP.
Błąd #7: Błędy przetwarzania wsadowego w GIMP
Komunikaty błędów w konsoli 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/gfigDlaczego tak się dzieje: GIMP wymaga wtyczek dla nowszych formatów. Wtyczka WebP może nie być zainstalowana, obsługa HEIF wymaga libheif, a obsługa AVIF wymaga GIMP 2.10.22+. Przetwarzanie wsadowe przez Script-Fu lub Python-Fu dokłada kolejną warstwę złożoności.
Błąd #8: „EXIF Data Lost” — niszczenie metadanych podczas konwersji
To nie jest komunikat błędu — to cicha utrata danych, której wiele osób nie zauważa, dopóki nie jest za późno.
Co ginie:
- Ustawienia aparatu (przysłona, czas migawki, ISO)
- Współrzędne GPS (gdzie zrobiono zdjęcie)
- Data i godzina wykonania zdjęcia
- Informacje o prawach autorskich
- Profil kolorów (sRGB, Adobe RGB, ProPhoto RGB)
- Orientacja (informacja o obrocie — skutkująca zdjęciami „bokiem”)
Narzędzia, które często usuwają EXIF:
- Windows Paint (usuwa wszystko)
- Wiele konwerterów online (z powodów „prywatności”, bez informowania)
- ImageMagick (usuwa domyślnie, chyba że jawnie sterujesz tym flagą
-strip) - Python Pillow (wymaga jawnej obsługi EXIF przez
exif=img.info.get('exif', b''))
Problem z orientacją bywa szczególnie dotkliwy:
Warning: JPEG file has EXIF orientation tag but image data is not rotated.
Auto-rotating image based on EXIF orientation.Niektóre narzędzia obracają obraz, ale nie aktualizują tagu EXIF, co prowadzi do podwójnego obrotu w niektórych przeglądarkach i poprawnego wyświetlania w innych.
Błąd #9: Problemy z przestrzenią barw i profilami ICC
Komunikaty błędów:
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 converterDlaczego tak się dzieje: profesjonalne obrazy często używają przestrzeni CMYK (do druku) albo profili o szerokim gamucie (Adobe RGB, ProPhoto RGB). Konwertowanie ich do formatów internetowych (które używają sRGB) bez właściwego zarządzania kolorem powoduje wyblakłe lub przesycone kolory.
Co widzisz: obraz, który wygląda idealnie na ekranie, po konwersji robi się neonowo-zielony albo błotnisto-brązowy. Albo profesjonalne zdjęcie traci całą żywotność barw.
Przyczyna techniczna: CMYK ma 4 kanały koloru (Cyan, Magenta, Yellow, Key/Black), a RGB ma 3 (Red, Green, Blue). Naiwna konwersja nie wykonuje poprawnej transformacji kolorów, przez co barwy są skrajnie błędne.
Błąd #10: Awarie „File Too Large” lub „Out of Memory”
Komunikaty błędów:
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.Dlaczego tak się dzieje: plik TIFF 100 MB w 300 DPI może mieć 8000×6000 pikseli. Nieskompresowany w pamięci to:
- 8000 × 6000 × 4 bajty (RGBA) = 192 MB RAM na jeden obraz
- przetwarzanie (zmiana rozmiaru, konwersja formatu) wymaga 2–3× tyle
- wsadowa konwersja 10 takich obrazów może zużyć 4–6 GB RAM
Większość aplikacji desktopowych i skryptów nie przetwarza obrazów strumieniowo — ładuje wszystko do pamięci naraz.
Domyślne limity polityk ImageMagick są często zbyt restrykcyjne:
# /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że być konieczna edycja policy.xml, aby zwiększyć te limity, ale wymaga to uprawnień administratora i zrozumienia konfiguracji XML.
Błąd #11: Konwersja SVG do rastra — koszmary „renderowania tekstu”
Częste problemy:
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 surfaceDlaczego tak się dzieje: pliki SVG często odwołują się do fontów, których nie ma w systemie. Podczas konwersji do PNG lub JPG silnik renderujący podstawia font domyślny, całkowicie zmieniając wygląd tekstu. Gradienty, filtry i osadzone obrazy w SVG dokładają kolejne potencjalne punkty awarii.
Przykład problemu z fontami:
Twoje SVG używa font-family: "Helvetica Neue", ale serwer Linux ma tylko Liberation Sans. Wynik wygląda subtelnie źle — inne odstępy między literami, inna grubość, przesunięte wyrównanie.
Dlaczego konwersja online po prostu działa (gdy narzędzia lokalne nie)
Po przejściu przez te wszystkie błędy możesz się zastanawiać: dlaczego narzędzia online robią to tak płynnie?
1. Wstępnie skonfigurowane środowisko: narzędzia online, takie jak GuruPDF, działają na serwerach, gdzie każdy kodek, biblioteka i delegate są już zainstalowane i poprawnie skonfigurowane. Nie brakuje libheif, nie ma błędnej polityki ImageMagick, nie brakuje Ghostscript.
2. Automatyczne wykrywanie formatu: serwer identyfikuje prawdziwy format pliku po nagłówku binarnym (magic bytes), a nie po rozszerzeniu. PNG podszywający się pod .jpg? Żaden problem.
3. Właściwe zarządzanie kolorem: narzędzia po stronie serwera poprawnie obsługują profile ICC i konwersje przestrzeni barw, zachowując wygląd obrazów.
4. Zarządzanie pamięcią: serwery w chmurze mają duże zasoby i przetwarzają obrazy wydajnie, obsługując duże pliki TIFF i skany w wysokiej rozdzielczości bez braku pamięci.
5. Zawsze aktualne: wsparcie dla nowych formatów, takich jak AVIF i HEIC, dodaje się po stronie serwera. Nie musisz nic aktualizować na komputerze.
6. Brak problemów z instalacją: bez środowisk Pythona, bez Homebrew, bez piekła DLL, bez edycji policy.xml, bez kompilowania ze źródeł.
Narzędzia do konwersji obrazów GuruPDF
GuruPDF obsługuje szeroki zakres konwersji formatów obrazów — za darmo i w przeglądarce:
Ze zdjęć i obrazów:
- JPG to PNG, JPG to WebP, JPG to SVG, JPG to PDF, JPG to GIF
- PNG to JPG, PNG to WebP, PNG to SVG, PNG to PDF, PNG to GIF
- HEIC to JPG, HEIC to PNG, HEIC to PDF
- AVIF to JPG, AVIF to PNG, AVIF to PDF
- WebP to JPG, WebP to PNG, WebP to GIF, WebP to PDF
- TIFF to JPG, TIFF to PNG, TIFF to PDF
- BMP to JPG, BMP to PNG, BMP to PDF
- GIF to PNG, GIF to WebP, GIF to PDF
Formaty wektorowe i specjalistyczne:
Narzędzia optymalizacji:
- Resize Image (dowolny format)
- Optimize JPG, Optimize PNG, Optimize GIF
- Grayscale PDF
Podsumowanie: przestań walczyć z komputerem
Jeśli kiedykolwiek spędziłeś 30 minut, próbując zainstalować libheif w Windows, albo zastanawiałeś się, dlaczego Twój CMYK TIFF wygląda na zielony po konwersji do JPG, albo zdziwił Cię błąd „no decode delegate” — nie jesteś sam. Konwersja obrazów powinna być prosta, ale narzędzia lokalne niepotrzebnie ją komplikują.
Następnym razem, gdy będziesz musiał przekonwertować obraz, spróbuj najpierw przesłać go do GuruPDF. Obsługuje każdy format, zachowuje jakość i działa w dowolnej przeglądarce na każdym urządzeniu. Bez instalacji, bez kodów błędów, bez frustracji.
Twój czas lepiej poświęcić na właściwą pracę, a nie na debugowanie delegate’ów ImageMagick.