Конвертация изображений между форматами звучит так, будто это должно быть просто — достаточно поменять расширение, верно? На деле тысячи пользователей ежедневно сталкиваются с загадочными ошибками, повреждёнными результатами и сбоями программ при попытке конвертировать изображения на своих локальных компьютерах. В то же время онлайн-инструменты вроде GuruPDF выполняют те же самые конвертации безупречно за считанные секунды.
В этой статье мы подробно разберём самые распространённые ошибки конвертации изображений, с которыми сталкиваются пользователи Windows, macOS и Linux, объясним, почему они возникают, и покажем, как полностью их избежать.
Самые распространённые форматы изображений (и почему они не всегда «дружат» между собой)
Прежде чем перейти к ошибкам, давайте разберём форматы, которые чаще всего создают проблемы:
| Format | Full Name | Compression | Transparency | Typical Use |
|---|---|---|---|---|
| JPG/JPEG | Joint Photographic Experts Group | Lossy | No | Фотографии, изображения для веба |
| PNG | Portable Network Graphics | Lossless | Yes | Скриншоты, логотипы, графика |
| WebP | Web Picture | Both | Yes | Современная оптимизация для веба |
| HEIC/HEIF | High Efficiency Image Container | Lossy/Lossless | Yes | Фото с iPhone/iPad (iOS 11+) |
| AVIF | AV1 Image File Format | Lossy/Lossless | Yes | Веб-формат нового поколения |
| SVG | Scalable Vector Graphics | N/A (vector) | Yes | Иконки, иллюстрации, логотипы |
| TIFF | Tagged Image File Format | Lossless | Yes | Печать, сканирование, архивирование |
| BMP | Bitmap | None | No | Устаревший формат Windows |
| GIF | Graphics Interchange Format | Lossless | 1-bit | Анимации, простая графика |
| EPS | Encapsulated PostScript | N/A (vector) | No | Полиграфический дизайн, профессиональная графика |
| DJVU | DjVu | Lossy | No | Отсканированные документы, книги |
В чём проблема? Большинство операционных систем и встроенных инструментов «из коробки» поддерживают лишь небольшую часть этих форматов. Именно здесь и начинаются ошибки.
Ошибка #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 — это «магическое число» 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."Почему это происходит: Preview.app в macOS поддерживает приличный набор форматов, но старые версии 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 (удаляет по умолчанию, если вы явно не управляете этим через
-strip) - 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
Большинство настольных приложений и скриптов не обрабатывают изображения потоково — они загружают файл целиком в память.
Ограничения политик 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, неверных политик ImageMagick или недостающего Ghostscript.
2. Автоматическое определение формата: сервер определяет реальный формат по двоичному заголовку (magic bytes), а не по расширению. PNG, замаскированный под .jpg? Не проблема.
3. Корректное управление цветом: серверные инструменты правильно обрабатывают ICC-профили и преобразования цветовых пространств, сохраняя визуальный вид изображений.
4. Управление памятью: у облачных серверов достаточно ресурсов, и они эффективно обрабатывают изображения, справляясь с большими TIFF и высокодетальными сканами без нехватки памяти.
5. Всегда актуально: поддержка новых форматов вроде AVIF и HEIC добавляется на сервере. Вам не нужно ничего обновлять на компьютере.
6. Никаких проблем с установкой: никаких Python-окружений, никакого Homebrew, никакого «DLL-ада», никаких правок 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
- Grayscale PDF
Заключение: перестаньте бороться со своим компьютером
Если вы когда-либо тратили 30 минут на попытки установить libheif в Windows, или не могли понять, почему ваш CMYK TIFF после конвертации в JPG стал зелёным, или были в недоумении от ошибки «no decode delegate» — вы не одни. Конвертация изображений должна быть простой, но локальные инструменты делают её неоправданно сложной.
В следующий раз, когда вам понадобится конвертировать изображение, сначала попробуйте загрузить его в GuruPDF. Он обрабатывает все форматы, сохраняет качество и работает в любом браузере на любом устройстве. Никаких установок, никаких кодов ошибок, никакого раздражения.
Лучше потратить время на реальную работу, чем отлаживать delegates в ImageMagick.