Конвертація зображень між форматами звучить так, ніби це має бути просто — просто змінити розширення, так? Насправді тисячі користувачів щодня стикаються з незрозумілими помилками, пошкодженими результатами та збоями програм, коли намагаються конвертувати зображення на своїх локальних машинах. Тим часом онлайн-інструменти на кшталт GuruPDF виконують ті самі конвертації бездоганно за лічені секунди.
У цій статті ми детально розглянемо найпоширеніші помилки конвертації зображень, з якими люди стикаються у Windows, macOS та Linux, пояснимо, чому вони виникають, і покажемо, як повністю їх уникнути.
Найпоширеніші формати зображень (і чому вони не завжди «дружать» між собою)
Перш ніж перейти до помилок, розберімося з форматами, які створюють найбільше проблем:
| Format | Full Name | Compression | Transparency | Typical Use |
|---|---|---|---|---|
| JPG/JPEG | Об’єднана група експертів з фотографії (Joint Photographic Experts Group) | З втратами | Ні | Фото, зображення для вебу |
| PNG | Портативна мережева графіка (Portable Network Graphics) | Без втрат | Так | Скріншоти, логотипи, графіка |
| WebP | Web Picture | Обидва | Так | Сучасна оптимізація для вебу |
| HEIC/HEIF | Контейнер зображень високої ефективності (High Efficiency Image Container) | З втратами/Без втрат | Так | Фото iPhone/iPad (iOS 11+) |
| AVIF | Формат файлу зображення AV1 (AV1 Image File Format) | З втратами/Без втрат | Так | Веб-формат нового покоління |
| SVG | Масштабована векторна графіка (Scalable Vector Graphics) | N/A (вектор) | Так | Іконки, ілюстрації, логотипи |
| TIFF | Тегований формат файлу зображення (Tagged Image File Format) | Без втрат | Так | Друк, сканування, архівування |
| BMP | Bitmap | Немає | Ні | Застарілий формат Windows |
| GIF | Формат обміну графікою (Graphics Interchange Format) | Без втрат | 1-біт | Анімації, проста графіка |
| EPS | Інкапсульований PostScript (Encapsulated PostScript) | N/A (вектор) | Ні | Дизайн для друку, професійна графіка |
| DJVU | DjVu | З втратами | Ні | Скановані документи, книги |
Проблема? Більшість операційних систем і вбудованих інструментів «з коробки» підтримують лише кілька з них. Саме тут і починаються помилки.
Помилка №1: "Windows Photo Viewer Can't Open This Picture" (HEIC/AVIF/WebP)
Коди помилок і повідомлення, які ви можете побачити:
"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."Чому це трапляється: Windows 10/11 не підтримує HEIC (типовий формат фото iPhone починаючи з iOS 11) або AVIF нативно. Потрібно встановити "HEIF Image Extensions" ($0.99) і "AV1 Video Extensions" з Microsoft Store. Підтримку WebP додали лише у Windows 10 версії 1809 і новіших.
Спроба локального виправлення: встановити пакети кодеків, використати сторонні переглядачі або спробувати інструменти командного рядка на кшталт ImageMagick:
magick convert input.heic output.jpgАле ImageMagick потребує встановлення додаткових delegate-бібліотек (libheif, libde265), що часто завершується помилкою:
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.Просте рішення: завантажте ваші файли HEIC, AVIF або WebP на GuruPDF і конвертуйте їх у JPG або PNG одним кліком — без кодеків, без встановлень, без помилок.
Помилка №2: "No Decode Delegate" — в ImageMagick бракує кодеків
Повне повідомлення про помилку:
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.Чому це трапляється: ImageMagick — один із найпопулярніших інструментів командного рядка для роботи із зображеннями, але він не включає декодери для всіх форматів «з коробки». Кожен формат потребує бібліотеки-«delegate»:
- WebP потребує
libwebp - HEIC потребує
libheif+libde265 - AVIF потребує
libavif+dav1d - SVG потребує
librsvgабо Inkscape - EPS потребує Ghostscript (
gs) - DJVU потребує
djvulibre
Встановлювати це у Windows особливо болісно — треба завантажувати попередньо зібрані DLL, класти їх у правильну директорію й сподіватися, що версії збігаються.
У macOS:
brew install imagemagick --with-librsvg --with-libheif --with-webpЧасто завершується помилкою:
Error: invalid option: --with-librsvgТому що Homebrew змінив структуру формул і ці опції прибрали.
У Linux (Ubuntu/Debian):
sudo apt install imagemagick libheif-dev libwebp-devМоже все одно не спрацювати, бо системний ImageMagick зібрано без цього delegate. Тоді доведеться компілювати з вихідних кодів:
./configure --with-heic=yes --with-webp=yes
make && sudo make installЦе може зайняти 10+ хвилин і конфліктувати з системними пакетами.
Помилка №3: "Not a JPEG File: Starts With 0x89" — неправильне розширення файлу
Повідомлення про помилки:
Not a JPEG file: starts with 0x89 0x50Corrupt JPEG data: premature end of data segmentlibpng error: Not a PNG fileIHDR: CRC errorЧому це трапляється: хтось перейменував PNG-файл у .jpg (або навпаки). Розширення файлу не відповідає реальному двійковому вмісту. Байти 0x89 0x50 — це magic number PNG (перші байти кожного PNG — 89 50 4E 47). JPEG починається з FF D8 FF.
Це трапляється напрочуд часто, коли:
- Завантажуєте зображення з вебу (сервери інколи виставляють неправильні заголовки Content-Type)
- Пакетно перейменовуєте файли, не виконуючи реального конвертування
- Поштові клієнти або месенджери непомітно змінюють розширення
Як визначити реальний формат:
file mysterious-image.jpg
# Output: mysterious-image.jpg: PNG image data, 1920 x 1080, 8-bit/color RGBAУ 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 JPEGПеревага онлайн-підходу: GuruPDF автоматично визначає реальний формат файлу незалежно від того, що написано в розширенні, і коректно його конвертує.
Помилка №4: Помилки конвертації в Python Pillow (PIL)
Поширені повідомлення про помилки:
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 pixelsЧому це трапляється: бібліотека Pillow у Python — стандартний вибір для програмної конвертації зображень, але вона має суттєві обмеження:
- Немає підтримки HEIC без
pillow-heif(окрема інсталяція, яка вимагає системних бібліотек) - RGBA у JPEG не збережеться, бо JPEG не підтримує прозорість — спершу треба конвертувати в RGB
- Палітровий режим (P) у JPEG потребує конвертації в RGB
- Великі зображення запускають захист від decompression bomb (функція безпеки)
Типовий обхідний код, з яким люди мучаться:
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)Забагато «обв’язки», щоб конвертувати одне зображення. І це все одно не обробить HEIC, AVIF або WebP без додаткових бібліотек.
Помилка №5: macOS Preview — помилки "Could Not Be Exported"
Повідомлення про помилки:
"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."Чому це трапляється: macOS Preview.app підтримує непоганий набір форматів, але старіші версії macOS (до Ventura) не підтримують WebP або AVIF нативно. Навіть у новіших версіях конвертація між певними комбінаціями форматів може тихо падати або давати пошкоджений результат.
Поширені помилки команд 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 SVGІнструмент sips (Scriptable Image Processing System) вбудований у macOS, але підтримує лише обмежений набір форматів: JPEG, TIFF, PNG, GIF, BMP та PICT.
Помилка №6: Збої конвертації зображень у FFmpeg
Поширені помилки:
[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 typeЧому це трапляється: FFmpeg — насамперед інструмент для відео, і хоча він може конвертувати зображення, йому потрібна підтримка конкретних кодеків, зібрана під час компіляції. У багатьох системно встановлених версіях FFmpeg немає підтримки HEIC/AVIF/WebP.
Помилка №7: Помилки пакетної обробки в GIMP
Повідомлення про помилки в консолі 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/gfigЧому це трапляється: GIMP потребує плагінів для новіших форматів. Плагін WebP може бути не встановлений, підтримка HEIF вимагає libheif, а підтримка AVIF потребує GIMP 2.10.22+. Пакетна обробка через Script-Fu або Python-Fu додає ще один рівень складності.
Помилка №8: "EXIF Data Lost" — знищення метаданих під час конвертації
Це не повідомлення про помилку — це «тиха» втрата даних, яку багато хто помічає занадто пізно.
Що втрачається:
- Налаштування камери (діафрагма, витримка, ISO)
- GPS-координати (де було зроблено фото)
- Дата й час, коли зроблено фото
- Інформація про авторські права
- Колірний профіль (sRGB, Adobe RGB, ProPhoto RGB)
- Орієнтація (інформація про поворот — через що фото можуть ставати «боком»)
Інструменти, які часто видаляють EXIF:
- Windows Paint (видаляє все)
- Багато онлайн-конвертерів (з міркувань «приватності», не попереджаючи)
- ImageMagick (за замовчуванням видаляє, якщо ви не керуєте цим явно)
- Python Pillow (потребує явної обробки EXIF через
exif=img.info.get('exif', b''))
Проблема з орієнтацією особливо неприємна:
Warning: JPEG file has EXIF orientation tag but image data is not rotated.
Auto-rotating image based on EXIF orientation.Деякі інструменти повертають зображення, але не оновлюють EXIF-тег, що призводить до подвійного повороту в одних переглядачах і коректного відображення в інших.
Помилка №9: Проблеми з колірним простором і ICC-профілями
Повідомлення про помилки:
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 converterЧому це трапляється: професійні зображення часто використовують колірні простори CMYK (для друку) або широкі гамутні профілі (Adobe RGB, ProPhoto RGB). Конвертація їх у веб-формати (які використовують sRGB) без коректного керування кольором дає «вимиті» або перенасичені кольори.
Що ви бачите: зображення, яке ідеально виглядає на екрані, після конвертації стає неоново-зеленим або брудно-коричневим. Або професійне фото повністю втрачає насиченість.
Технічна причина: CMYK має 4 канали (Cyan, Magenta, Yellow, Key/Black), тоді як RGB має 3 (Red, Green, Blue). Наївна конвертація не застосовує правильне перетворення кольору, через що кольори стають сильно некоректними.
Помилка №10: "File Too Large" або збої "Out of Memory"
Повідомлення про помилки:
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.Чому це трапляється: TIFF на 100 MB при 300 DPI може мати 8000×6000 пікселів. У нестисненому вигляді в пам’яті це:
- 8000 × 6000 × 4 байти (RGBA) = 192 MB RAM для одного зображення
- Обробка (зміна розміру, конвертація формату) потребує 2–3× більше
- Пакетна конвертація 10 таких зображень може спожити 4–6 GB RAM
Більшість десктопних застосунків і скриптів не обробляють зображення потоково — вони завантажують усе в пам’ять одразу.
Типові обмеження policy в ImageMagick часто надто жорсткі:
# /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"/>Можливо, вам доведеться редагувати policy.xml, щоб збільшити ліміти, але для цього потрібні права адміністратора й розуміння конфігурації XML.
Помилка №11: Конвертація SVG у растр — кошмари з «рендерингом тексту»
Поширені проблеми:
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 surfaceЧому це трапляється: SVG-файли часто посилаються на шрифти, яких немає у вашій системі. Під час конвертації в PNG або JPG рушій рендерингу підставляє шрифт за замовчуванням, повністю змінюючи вигляд тексту. Градієнти, фільтри та вбудовані зображення в SVG додають ще більше потенційних точок відмови.
Приклад проблеми зі шрифтом:
Ваш SVG використовує font-family: "Helvetica Neue", але на вашому Linux-сервері є лише Liberation Sans. Результат виглядає трохи неправильно — інші інтервали між літерами, інша товщина, з’їханий текст.
Чому онлайн-конвертація просто працює (коли локальні інструменти — ні)
Після всіх цих помилок може виникнути питання: чому онлайн-інструменти справляються з конвертаціями так гладко?
1. Попередньо налаштоване середовище: онлайн-інструменти на кшталт GuruPDF працюють на серверах, де всі кодеки, бібліотеки та delegate уже встановлені й правильно налаштовані. Немає відсутнього libheif, неправильної policy ImageMagick або відсутнього Ghostscript.
2. Автоматичне визначення формату: сервер визначає реальний формат за двійковим заголовком (magic bytes), а не за розширенням. PNG, замаскований під .jpg? Без проблем.
3. Коректне керування кольором: серверні інструменти правильно обробляють ICC-профілі та конвертації колірних просторів, зберігаючи візуальний вигляд зображень.
4. Керування пам’яттю: хмарні сервери мають достатньо ресурсів і ефективно обробляють зображення, справляючись із великими TIFF та високою роздільною здатністю без нестачі пам’яті.
5. Завжди актуально: підтримка нових форматів на кшталт AVIF і HEIC додається на сервері. Вам не потрібно нічого оновлювати на комп’ютері.
6. Жодного болю з інсталяціями: жодних Python-оточень, Homebrew, «DLL hell», редагування policy.xml або компіляції з вихідних кодів.
Інструменти конвертації зображень GuruPDF
GuruPDF підтримує широкий спектр конвертацій форматів зображень — безкоштовно та прямо в браузері:
Із фото та зображень:
- JPG у PNG, JPG у WebP, JPG у SVG, JPG у PDF, JPG у GIF
- PNG у JPG, PNG у WebP, PNG у SVG, PNG у PDF, PNG у GIF
- HEIC у JPG, HEIC у PNG, HEIC у PDF
- AVIF у JPG, AVIF у PNG, AVIF у PDF
- WebP у JPG, WebP у PNG, WebP у GIF, WebP у PDF
- TIFF у JPG, TIFF у PNG, TIFF у PDF
- BMP у JPG, BMP у PNG, BMP у PDF
- GIF у PNG, GIF у WebP, GIF у PDF
Векторні та спеціалізовані формати:
Інструменти оптимізації:
- Змінити розмір зображення (будь-який формат)
- Оптимізувати JPG, Оптимізувати PNG, Оптимізувати GIF
- PDF у градаціях сірого
Висновок: припиніть боротися зі своїм комп’ютером
Якщо ви коли-небудь витратили 30 хвилин, намагаючись встановити libheif у Windows, або дивувалися, чому ваш CMYK TIFF виглядає зеленим після конвертації в JPG, або були спантеличені помилкою "no decode delegate" — ви не самі. Конвертація зображень має бути простою, але локальні інструменти роблять її невиправдано складною.
Наступного разу, коли вам потрібно конвертувати зображення, спробуйте спочатку завантажити його на GuruPDF. Він обробляє будь-які формати, зберігає якість і працює в будь-якому браузері на будь-якому пристрої. Жодних встановлень, жодних кодів помилок, жодного роздратування.
Ваш час краще витратити на реальну роботу, а не на дебаг delegate-бібліотек ImageMagick.