В OpenCart изображения могут пропасть по-разному.
У одного магазина после переноса перестают отображаться вообще все картинки товаров. У другого в админке изображение выбрано, но на витрине вместо него пустое место. У третьего открывается оригинальный файл, но не генерируются миниатюры.
Поэтому первое, что нужно сделать, — понять на каком этапе ломается цепочка:
Файл изображения существует?
↓
OpenCart знает правильный путь?
↓
Оригинал открывается напрямую?
↓
Может ли OpenCart создать миниатюру?
↓
Правильно ли формируется URL?
↓
Не блокирует ли браузер HTTPS / Mixed Content?
↓
Не подменяет ли путь тема или модификатор?Менять права на все каталоги, очищать весь серверный кеш и переустанавливать OpenCart наугад не нужно.
Сначала локализуем проблему.
Что проверить в первую очередь
↑ К оглавлениюЕсли OpenCart перестал показывать изображения, не начинайте сразу с:
chmod -R 777
удалить весь cache
переустановить тему
пересохранить все товарыСначала возьмите одно конкретное сломанное изображение.
Например:
Товар: Ноутбук ASUS
Файл в админке: catalog/laptops/asus.jpgИ ответьте на четыре вопроса:
1. Есть ли физически файл image/catalog/laptops/asus.jpg?
2. Открывается ли оригинал напрямую?
3. Открывается ли его версия из image/cache/?
4. Какой URL картинки реально указан в HTML страницы?Эти четыре проверки часто сразу показывают, где проблема.
Шаг 1. Определяем масштаб проблемы
↑ К оглавлениюСначала выясните, что именно не отображается.
Вариант A — пропали все изображения
Не работают:
- логотип;
- картинки товаров;
- категории;
- баннеры;
- дополнительные изображения.
Тогда вероятность выше, что проблема общая:
DIR_IMAGE
config.php
домен / HTTPS
права
путь после миграцииВариант B — не работают только товары
Логотип и баннеры есть, но товарные изображения пропали.
Проверяем:
путь товара
наличие исходного файла
базу данных
image/cacheВариант C — оригинал есть, миниатюры отсутствуют
Это особенно важный симптом.
OpenCart не всегда отдаёт исходную картинку прямо на карточку или каталог. Он создаёт уменьшенные версии в каталоге image/cache/.
Поэтому ситуация:
/image/catalog/product/photo.jpg → работает
/image/cache/catalog/product/...jpg → 404сразу отправляет нас к генерации кеша изображений.
Шаг 2. Проверяем исходный файл на сервере
↑ К оглавлениюДопустим, OpenCart хранит путь:
catalog/product/photo.jpgФизически ожидаем:
/path/to/opencart/image/catalog/product/photo.jpgНа Linux можно проверить:
ls -lah /path/to/opencart/image/catalog/product/photo.jpgЕсли получаем:
No such file or directoryOpenCart тут ни при чём — исходного файла физически нет.
После миграции изображения часто просто не копируют
↑ К оглавлениюТипичный перенос:
база данных → перенесли
код сайта → перенесли
image/ → перенесли не полностьюВ базе остаётся:
catalog/product/photo.jpgно файла на новом сервере уже нет.
Проверьте количество файлов на старом и новом сервере, если старый ещё доступен.
Например:
find /old/site/image/catalog -type f | wc -lи:
find /new/site/image/catalog -type f | wc -lЕсли было:
18432а стало:
12107проблема уже найдена.
Шаг 3. Открываем оригинал напрямую
↑ К оглавлениюПопробуйте открыть:
https://example.com/image/catalog/product/photo.jpgЕсли изображение открывается — исходный файл существует и веб-сервер может его отдать.
Если получаем:
404 Not Foundпроверяем:
- правильность пути;
- физическое наличие;
- регистр букв;
- права;
- корень сайта.
Если:
403 Forbiddenсмотрим уже права и конфигурацию веб-сервера.
Шаг 4. Смотрим, какой URL реально отдаёт OpenCart
↑ К оглавлениюОткройте проблемную страницу товара.
В Chrome:
F12
→ ElementsНайдите <img>.
Например:
<img src="https://example.com/image/cache/catalog/product/photo-500x500.jpg">Скопируйте значение src и откройте его отдельно.
Это принципиально важно.
Не надо гадать:
«Наверное, картинка не загружается».
Нужно получить конкретный ответ:
200
404
403
500
mixed contentШаг 5. Используем Network
↑ К оглавлениюВ DevTools:
F12
→ Network
→ ImgПерезагрузите страницу.
Теперь видно, какие изображения падают.
Например:
photo-500x500.jpg 404
logo.png 200
banner.webp 200Это уже сильно сужает проблему.
Если изображение отдаёт 404
Проверяем:
путь
исходный файл
image/cache
регистрЕсли 403
Проверяем:
permissions
owner
Nginx / ApacheЕсли 500
Проверяем:
PHP
GD
ошибки OpenCart
модификаторШаг 6. Проверяем путь изображения в OpenCart
↑ К оглавлениюВ админке откройте проблемный товар и посмотрите выбранное изображение.
В нормальной ситуации OpenCart хранит относительный путь внутри каталога изображений, например:
catalog/product/photo.jpgа не абсолютный Windows/Linux путь вида:
C:\Users\...или:
/home/olduser/public_html/...Сам каталог изображений определяется конфигурацией OpenCart через DIR_IMAGE.
Шаг 7. Проверяем DIR_IMAGE
↑ К оглавлениюЭто особенно важно после переезда.
В зависимости от версии OpenCart структура конфигурации различается, но в классических 2.x/3.x вы обычно увидите DIR_IMAGE в:
config.phpи:
admin/config.phpПример:
define('DIR_IMAGE', '/var/www/example.com/image/');После переезда может остаться старый путь:
define('DIR_IMAGE', '/home/olduser/public_html/image/');при том что реальный сайт теперь находится:
/var/www/example.com/Тогда OpenCart ищет изображения вообще не там.
Проверяем путь
На сервере:
grep DIR_IMAGE /path/to/site/config.phpДля старых веток также:
grep DIR_IMAGE /path/to/site/admin/config.phpЗатем:
ls -ld /var/www/example.com/imageПуть из конфигурации должен соответствовать реальному каталогу.
Не меняйте config.php по статье вслепую
Сначала сделайте резервную копию:
cp config.php config.php.bakи при необходимости:
cp admin/config.php admin/config.php.bakПосле этого уже сравнивайте пути.
Шаг 8. Проверяем image/cache
↑ К оглавлениюOpenCart генерирует уменьшенные изображения в:
image/cache/Например исходник:
image/catalog/products/phone.jpgможет породить файл вроде:
image/cache/catalog/products/phone-300x300.jpgТочное имя зависит от версии и требуемого размера.
Проверяем каталог
ls -ld image/cacheЗатем:
find image/cache -maxdepth 2 -type f | headЕсли каталог пустой, это ещё не обязательно ошибка.
Но если OpenCart пытается создать миниатюры, а каталог остаётся пустым, проверяем возможность записи.
Почему оригинал работает, а миниатюра нет
↑ К оглавлениюДопустим:
https://example.com/image/catalog/product/photo.jpgоткрывается.
Но:
https://example.com/image/cache/catalog/product/photo-500x500.jpgдаёт 404.
Тогда вероятная цепочка:
исходник найден
↓
OpenCart пытается создать resized image
↓
создание файла не происходит
↓
браузер запрашивает отсутствующий cache-файлПроверяем:
- права;
- владельца;
- PHP GD;
- ошибки PHP;
- свободное место;
- модификации image tool.
Шаг 9. Проверяем права
↑ К оглавлениюСначала смотрим фактические значения:
namei -l /var/www/example.com/image/cacheили:
ls -ld /var/www/example.com/image
ls -ld /var/www/example.com/image/cacheИ для конкретного файла:
ls -l /var/www/example.com/image/catalog/product/photo.jpgНе ставьте 777 как универсальное решение
Совет:
chmod -R 777 image— плохой.
Он:
- чрезмерно расширяет доступ;
- маскирует настоящую проблему владельца;
- создаёт риск безопасности.
Обычно веб-серверу/PHP нужна возможность читать исходники и создавать кешированные файлы там, где OpenCart действительно должен писать.
Конкретный пользователь зависит от сервера:
www-data
nginx
apacheпоэтому универсальную команду chown копировать вслепую тоже не стоит.
Шаг 10. Проверяем владельца файлов
↑ К оглавлениюОчень частая ситуация после:
scp
rsync
распаковки архива под rootПолучается:
image/catalog → владелец root
image/cache → владелец root
PHP-FPM → www-dataPHP читает часть файлов, но не может создавать новые.
Проверяем:
ls -ld image image/cache image/catalogНапример:
drwxr-xr-x root root image/cacheСамо по себе это ещё не доказывает проблему, но если PHP должен туда писать, нужно проверить права именно от имени PHP-пользователя.
Шаг 11. Проверяем запись безопасно
↑ К оглавлениюНе создавайте мусор через PHP-код на production.
Лучше сначала определить пользователя PHP-FPM:
ps aux | grep php-fpmили:
grep -R "^user =" /etc/php/*/fpm/pool.d/После этого уже можно понять, имеет ли этот пользователь право записи в image/cache.
Шаг 12. Регистр букв — очень частая проблема после Windows
↑ К оглавлениюНа Windows:
Photo.JPG
photo.jpg
PHOTO.jpgчасто воспринимаются файловой системой без различия регистра.
На Linux:
Photo.JPGи:
photo.jpg— разные имена.
После переноса магазин может хранить:
catalog/product/photo.jpgа реальный файл называется:
Photo.jpgРезультат:
404Проверяем
ls -lah image/catalog/product/Сравниваем имя символ в символ.
Особенно:
.jpg / .JPG
.png / .PNG
Catalog / catalog
Product / productШаг 13. Ищем похожий файл без учёта регистра
↑ К оглавлениюfind image/catalog -iname "photo.jpg"Если вывод:
image/catalog/Product/Photo.JPGа OpenCart запрашивает:
image/catalog/product/photo.jpgпричина найдена.
Шаг 14. Проверяем HTTPS
↑ К оглавлениюПосле перехода магазина с:
http://на:
https://часть изображений может продолжать загружаться по HTTP.
Даже если сам магазин уже работает по HTTPS, тема или старый контент может продолжать генерировать ссылки:
http://example.com/image/...Проверяем Mixed Content
Откройте:
F12
→ ConsoleЕсли видите что-то вроде:
Mixed Contentзначит HTTPS-страница пытается загрузить небезопасный HTTP-ресурс.
Проверяем HTML
В DevTools найдите:
<img src="http://example.com/image/...">при странице:
https://example.com/productЭто уже конкретная проблема формирования URL.
Шаг 15. После смены домена
↑ К оглавлениюБыло:
old-shop.ruстало:
new-shop.ruСам OpenCart в нормальной схеме должен формировать URL изображений относительно конфигурации магазина, но кастомная тема, HTML-описания, модификаторы или сторонние модули могут содержать старый домен жёстко.
Поищите:
grep -R "old-shop.ru" catalog/ system/ extension/ 2>/dev/nullНо на большом проекте сначала лучше ограничить поиск каталогом темы и модификаций.
Не делайте массовый SQL REPLACE без backup
Особенно если база содержит сериализованные или расширениями структурированные данные.
Сначала:
mysqldump ...и только потом анализ.
Шаг 16. Проверяем кеш OpenCart
↑ К оглавлениюКеш действительно может мешать после изменений.
Но здесь важно различать:
обычный системный cacheи:
image/cacheЭто не одно и то же.
Удаление системного кеша само по себе не восстановит отсутствующий исходный JPG.
Когда очищать кеш имеет смысл
После:
- замены изображения;
- исправления темы;
- изменения размеров миниатюр;
- удаления старых модификаций;
- переноса сайта;
- исправления пути.
Сначала устраните причину, потом очищайте кеш.
Шаг 17. Не удаляйте image/catalog
↑ К оглавлениюЕсли захотели «очистить картинки OpenCart», удалять нужно не исходные изображения.
Вот это:
image/catalog/обычно содержит оригиналы.
А:
image/cache/— производные файлы.
Перепутать их — отличный способ превратить проблему «нет миниатюр» в проблему «нет вообще никаких изображений».
Перед очисткой image/cache сделайте backup
Даже если кеш воспроизводим, безопаснее:
mv image/cache image/cache.old
mkdir image/cacheНо делать это нужно только после проверки прав и понимания конкретной версии магазина.
Если OpenCart затем успешно создаёт новые миниатюры — старый cache действительно можно было регенерировать.
Если новый каталог остаётся пустым — проблема глубже.
Шаг 18. Проверяем тему
↑ К оглавлениюЕсли изображения пропали только:
на главной
в карточке товара
в модуле рекомендацийно, например, в стандартном каталоге они есть, проверяем тему.
Кастомная тема может:
- использовать собственный resize;
- формировать свой URL;
- ожидать нестандартные размеры;
- использовать lazy loading;
- заменять
srcнаdata-src; - подключать WebP-модуль.
Быстрая проверка через HTML
Посмотрите:
<img src="">или:
<img data-src="...">Если src пустой, а JavaScript должен подставить его позже, проблема может вообще быть не в OpenCart image tool, а в JS темы.
Проверяем Console
F12
→ ConsoleЕсли есть:
Uncaught TypeError
ReferenceErrorи одновременно не работают lazy-loaded картинки, сначала чините JavaScript.
Шаг 19. Проверяем OCMOD и расширения
↑ К оглавлениюВ OpenCart 2.x/3.x огромное количество магазинов использует OCMOD и сторонние расширения.
Они могут изменять:
- image resize;
- controller товара;
- template;
- URL картинок;
- WebP;
- lazy loading;
- CDN;
- кеширование.
Если изображения пропали сразу после установки модуля, это очень сильный сигнал.
Не отключайте всё на production вслепую
Сначала:
- зафиксируйте, после чего появилась ошибка;
- сделайте backup;
- проверьте modifications;
- сравните с default behaviour;
- по возможности тестируйте на staging.
Если проблема появилась после Refresh Modifications
Отдельно запомните момент:
Extensions
→ Modifications
→ RefreshПосле refresh может начать применяться модификация, которая до этого фактически не работала.
Если сразу после этого исчезли изображения — исследуйте соответствующий XML/OCMOD.
Шаг 20. Проверяем PHP GD
↑ К оглавлениюOpenCart использует PHP для обработки изображений. Если нужная графическая библиотека недоступна или работает неправильно, resize может падать.
Проверяем:
php -m | grep -i gdНормальный результат:
gdДополнительно:
php -i | grep -i "GD Support"Ожидаем:
GD Support => enabledВажный нюанс с CLI и PHP-FPM
Команда:
php -mпроверяет CLI PHP.
А сайт может работать через другую версию PHP-FPM.
Например:
CLI: PHP 8.3
FPM: PHP 8.1Поэтому:
php -m → gd естьещё не гарантирует, что GD есть именно у того PHP, который обслуживает OpenCart.
Проверяем версию PHP-FPM
Например:
systemctl status php8.2-fpmили:
ps aux | grep php-fpmДальше уже смотрим конфигурацию конкретной версии.
Шаг 21. Проверяем тип исходного файла
↑ К оглавлениюЕсли тип изображения не подходит ожидаемой обработке, генерация resized-копии может не пройти как ожидается.
Проверить файл:
file image/catalog/product/photo.jpgНормально:
JPEG image dataПодозрительно:
HTML document
ASCII text
emptyРасширение .jpg ещё не означает, что внутри действительно JPEG.
Проверяем битое изображение
Можно использовать:
identify image/catalog/product/photo.jpgесли установлен ImageMagick.
Или:
file image/catalog/product/photo.jpgЕсли файл был повреждён при загрузке или переносе, OpenCart его не починит.
Шаг 22. Проверяем свободное место
↑ К оглавлениюЭто реже, но очень неприятно.
df -hЕсли:
/dev/vda1 100%OpenCart просто некуда записывать новые cache-файлы.
Также:
df -iЕсли закончились inode, место в гигабайтах может ещё быть, но новые файлы создавать невозможно.
Шаг 23. Проверяем error log
↑ К оглавлениюНе угадывайте, если сервер уже сообщает ошибку.
В зависимости от версии OpenCart логи могут лежать в storage/logs.
Ищите:
error.logНапример:
tail -n 100 /path/to/storage/logs/error.logЧто искать в логе
Например:
Permission deniedgetimagesize(): failedimagecreatefromjpeg()No such file or directoryAllowed memory size exhaustedЭто гораздо полезнее совета:
«Попробуйте очистить кеш».
Шаг 24. Проверяем PHP-FPM / веб-сервер
↑ К оглавлениюЕсли OpenCart log пуст, смотрим системные логи.
Nginx:
tail -n 100 /var/log/nginx/error.logPHP-FPM — через journal, например:
journalctl -u php8.2-fpm -n 100 --no-pagerНазвание сервиса зависит от установленной версии PHP.
Шаг 25. Если изображений очень много
↑ К оглавлениюПроблема может появляться не для всех файлов.
Например:
маленькие JPEG работают
огромные PNG → нетТогда проверяем память PHP.
Изображение размером:
8000 × 8000может потребовать гораздо больше памяти при декодировании, чем размер его файла на диске.
Файл 8 MB не означает, что PHP нужно всего 8 MB RAM.
Проверяем memory_limit
php -i | grep memory_limitНо опять помним: CLI и FPM могут отличаться.
Если в логах есть:
Allowed memory size exhaustedувеличивать лимит можно только после того, как вы убедились, что исходные изображения имеют разумные размеры.
Шаг 26. В админке картинка есть, на витрине нет
↑ К оглавлениюЭто отдельная полезная ветка.
Если Image Manager показывает изображение, значит:
файл существует
админка его читаетНо витрина может использовать:
- другой размер;
- другой URL;
- cache-версию;
- кастомную тему;
- CDN/WebP extension.
Тогда сравните URL картинки:
в админкеи:
на витринеШаг 27. Изображение есть у товара, но в категории пусто
↑ К оглавлениюЕсли карточка товара показывает фотографию, а список категории — нет, исходный файл почти наверняка исправен.
Проверяем уже:
resize для category thumbnail
размеры темы
template категории
модификаторЭто значительно лучше, чем повторно загружать все картинки.
Шаг 28. Изображения не работают только на одном магазине multistore
↑ К оглавлениюЕсли OpenCart работает в режиме нескольких магазинов, сравните:
Store A → изображения есть
Store B → изображений нетЕсли файловая система общая, проблема, вероятно, в:
- URL;
- конфигурации магазина;
- HTTPS;
- теме;
- store-specific extension.
Не в самих JPEG.
Быстрый диагностический алгоритм
↑ К оглавлениюOpenCart не показывает изображение
↓
Открываем URL картинки
↓
┌────┴────┐
200 ошибка
↓ ↓
HTML/theme какой статус?
↓
┌──────┼──────┐
404 403 500
↓ ↓ ↓
путь права PHP/log
↓
Исходник существует?
↓ ↓
НЕТ ДА
↓ ↓
восстановить cache image работает?
файл ↓ ↓
НЕТ ДА
↓ ↓
cache/GD theme/HTML
permissions HTTPS/JSБыстрый набор команд
↑ К оглавлениюПроверить файл
ls -lah image/catalog/product/photo.jpgНайти файл без учёта регистра
find image/catalog -iname "photo.jpg"Проверить каталог кеша
ls -ld image/cacheПосмотреть владельца
ls -ld image image/cache image/catalogПроверить путь полностью
namei -l /var/www/example.com/image/cacheПроверить GD
php -m | grep -i gdПроверить файл
file image/catalog/product/photo.jpgДиск
df -hInode
df -iOpenCart log
tail -n 100 /path/to/storage/logs/error.logNginx log
tail -n 100 /var/log/nginx/error.logЧто не стоит делать
↑ К оглавлению1. chmod -R 777
Не делайте это как первую попытку.
Если проблема была во владельце, вы её не поняли — только обошли ценой безопасности.
2. Массово перезагружать изображения
Если сломался DIR_IMAGE, 10 000 повторных загрузок проблему не решат.
3. Удалять весь каталог image
Там находятся исходники.
4. Очищать всё подряд
cache
modification
theme cache
browser cache
Cloudflare cacheодновременно.
Если после этого заработает, вы даже не узнаете причину.
5. Править базу без backup
Перед массовой заменой путей:
backup first6. Сразу винить OpenCart
Если прямой URL:
https://example.com/image/catalog/photo.jpgвозвращает 404, сначала разберитесь с файлом и веб-сервером.
Как исправлять по результату
↑ К оглавлениюФайла нет
Восстановить:
image/catalog/...из backup или исходного сервера.
Путь неправильный
Исправить путь после проверки конфигурации и места хранения файлов.
DIR_IMAGE ведёт на старый серверный каталог
Исправить конфигурацию только после backup.
Original = 200, cache = 404
Проверить:
image/cache
write permissions
owner
GD
logsHTTP-картинки блокируются на HTTPS
Исправить генерацию URL и старые ссылки.
Имя отличается регистром
Привести файл и сохранённый путь к одному точному имени.
Только кастомная тема не показывает изображения
Проверять theme/template/JS, а не файловую систему.
После модуля всё пропало
Проверять extension/OCMOD и делать rollback изменения на staging.
Как понять, что проблема действительно исправлена
↑ К оглавлениюНе ограничивайтесь одной карточкой товара.
Проверьте:
- главную;
- категорию;
- карточку товара;
- дополнительные изображения;
- поиск;
- похожие товары;
- мобильную версию.
В DevTools:
Network → Imgне должно быть массовых:
404
403
500Проверяем кеш заново
↑ К оглавлениюУдалите или регенерируйте только то, что действительно требуется вашей версии и конфигурации.
После этого откройте новый товар, для которого миниатюра ранее не генерировалась.
Если появляется свежий файл в:
image/cache/это хороший признак.
Если OpenCart всё ещё не видит изображения
↑ К оглавлениюСоберите перед дальнейшим ремонтом:
1. Версия OpenCart / ocStore.
2. Один конкретный проблемный товар.
3. Путь картинки из админки.
4. Фактический файл на сервере.
5. URL оригинала.
6. URL картинки из HTML витрины.
7. HTTP status этого URL.
8. Результат:
ls -ld image image/cache
9. DIR_IMAGE / конфигурацию пути.
10. Последние строки OpenCart error.log.
11. Используется ли:
кастомная тема
OCMOD
WebP
CDN
Cloudflare
12. После чего началась проблема:
перенос
HTTPS
обновление
модуль
смена темыПосле этого проблема перестаёт быть абстрактной:
«OpenCart не видит картинки»
и превращается, например, в:
image/catalog скопирован не полностью;или:
DIR_IMAGE всё ещё указывает на старый путь;или:
PHP-FPM читает оригинал, но не может писать в image/cache;или:
в базеphoto.jpg, а на Linux лежитPhoto.JPG;
или:
кастомная тема выдаёт HTTP URL на HTTPS-странице.
Вот это уже ремонтируется предметно.
Частые вопросы
Почему OpenCart не показывает изображения товаров?
Чаще всего проблема находится в одной из четырёх точек: исходного файла нет, путь к нему неправильный, OpenCart не может создать кешированную миниатюру или тема формирует неправильный URL.
Почему изображения пропали после переноса OpenCart?
Проверьте, полностью ли перенесён каталог image, не остались ли старые абсолютные пути в конфигурации, совпадает ли DIR_IMAGE с новым расположением сайта и сохранён ли регистр имён файлов.
Почему оригинальное изображение открывается, а в магазине его нет?
Витрина может использовать resized-копию из image/cache, другой размер, URL темы или lazy loading. Сравните прямой URL оригинала и URL из <img src> на витрине.
Можно ли удалить `image/cache`?
Это каталог производных изображений, но делать очистку нужно осознанно и после backup/проверки конкретной версии. Главное — не перепутать его с image/catalog, где лежат оригиналы.
Почему после очистки `image/cache` изображения не появились?
Значит OpenCart, скорее всего, не может создать новые миниатюры. Проверяйте права, владельца, GD, свободное место и error log.
Почему на Windows изображения работали, а после переноса на Linux перестали?
Linux различает регистр букв в именах файлов. Photo.JPG и photo.jpg — разные файлы.
Почему картинки работают по HTTP, но не по HTTPS?
Проверьте Mixed Content и фактические значения src. Тема, старый контент или модуль могут продолжать формировать HTTP-ссылки даже после включения HTTPS.
Почему изображения не работают только в категории, но работают в карточке товара?
Вероятно, исходник исправен. Ищите проблему в конкретном размере миниатюры, image/cache, шаблоне категории или модификаторе.
Нужна помощь с изображениями OpenCart?
Если изображения пропали после переноса сайта, обновления, HTTPS или установки расширения, нет смысла менять всё подряд.
Сначала нужно проверить цепочку:
файл → путь → DIR_IMAGE → image/cache → PHP → URL → тема/модификатор.
Когда найден конкретный этап, на котором OpenCart перестаёт видеть или обрабатывать изображение, исправление обычно становится значительно проще.