ImageMagick convert-im6.q16: невозможно открыть изображение – Нет такого файла или каталога @ error/blob.c/OpenBlob/2874

Вопрос или проблема

У меня возникли проблемы в скрипте с командой convert в пакете ImageMagick.

Вот строка:

convert $dst_folder/$1/$2/$3 -resize 144x144\> $thb_folder/$1/$2/$thb_picture

где $1 и $2 – это названия папок (год, месяц), а $3 – это имя файла.

При выполнении скрипта я получаю следующие ошибки:

convert-im6.q16: невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg': Нет такого файла или каталога @ error/blob.c/OpenBlob/2874.
convert-im6.q16: нет изображений, определенных `/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0010-th.jpeg' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg': Нет такого файла или каталога @ error/blob.c/OpenBlob/2874.
convert-im6.q16: нет изображений, определенных `/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0010-th.jpeg' @ error/convert.c/ConvertImageCommand/3258.

Очевидно, я проверил, что файл существует и имеет адекватные права:

ls -l /var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg
-rwxrwx--- 1 www-data www-all 1663905 Mar 20 12:55 /var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg

(скрипты запускаются с sudo). Однако файл -th не создается.

Интересно, что первые выполнения этой строки в скрипте часто работают (WA0008) … пока не начинают выдавать ошибки (WA0010):

сгенерировано миниатюра IMG-20220314-WA0008-th.jpeg для IMG-20220314-WA0008.jpeg (успех)
convert-im6.q16: невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg': Нет такого файла или каталога @ error/blob.c/OpenBlob/2874.
convert-im6.q16: нет изображений, определенных `/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0010-th.jpeg' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg': Нет такого файла или каталога @ error/blob.c/OpenBlob/2874.
convert-im6.q16: нет изображений, определенных `/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0010-th.jpeg' @ error/convert.c/ConvertImageCommand/3258.
chown: невозможно получить доступ к '/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0010-th.jpeg': Нет такого файла или каталога
chmod: невозможно получить доступ к '/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0010-th.jpeg': Нет такого файла или каталога

Если я снова запускаю скрипты, в этот раз файл WA0010 корректно обрабатывается

сгенерирована миниатюра IMG-20220314-WA0010-th.jpeg для IMG-20220314-WA0010.jpeg (успех)

Я пытался использовать опцию `-limit memory 32`, но улучшений не произошло.

Ниже я использовал `-debug all` на WA0008, но не смог прийти к выводу:

2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: utility.c/ExpandFilenames/954/Configure
  Командная строка: convert {-debug} {all} {/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0008.jpeg} {-resize} {144x144>} {/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0008-th.jpeg}
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Политика convert-im6.q16[192323]: policy.c/IsRightsAuthorized/604/Policy
  Домен: Модуль; права=Чтение; шаблон="JPEG" ...
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: configure.c/GetConfigureOptions/685/Configure
  Поиск файла конфигурации: "/usr/share/ImageMagick-6/coder.xml"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: configure.c/GetConfigureOptions/685/Configure
  Поиск файла конфигурации: "/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.10//config-Q16/coder.xml"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: configure.c/GetConfigureOptions/685/Configure
  Поиск файла конфигурации: "/etc/ImageMagick-6/coder.xml"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: configure.c/GetConfigureOptions/685/Configure
  Поиск файла конфигурации: "/usr/share/doc/imagemagick-6-common/htmlcoder.xml"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: configure.c/GetConfigureOptions/685/Configure
  Поиск файла конфигурации: "/root/.config/ImageMagick/coder.xml"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: configure.c/GetConfigureOptions/685/Configure
  Поиск файла конфигурации: "/root/.magick/coder.xml"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: coder.c/LoadCoderCache/818/Configure
  Загрузка конфигурационного файла кодера "/etc/ImageMagick-6/coder.xml" ...
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Модуль convert-im6.q16[192323]: module.c/OpenModule/1300/Module
  Поиск модуля "JPEG" с помощью имени файла "jpeg.la"
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Модуль convert-im6.q16[192323]: module.c/GetMagickModulePath/546/Module
  Поиск файла модуля кодера "jpeg.la" ...
2022-03-20T12:33:05+01:00 0:00.000 0.000u 6.9.10 Модуль convert-im6.q16[192323]: module.c/OpenModule/1309/Module
  Открытие модуля по пути "/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.10/modules-Q16/coders/jpeg.la"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Модуль convert-im6.q16[192323]: module.c/OpenModule/1336/Module
  Метод "RegisterJPEGImage" в модуле "JPEG" по адресу 0x7ff1dd3d05b0
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Модуль convert-im6.q16[192323]: module.c/OpenModule/1350/Module
  Метод "UnregisterJPEGImage" в модуле "JPEG" по адресу 0x7ff1dd3d08d0
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Политика convert-im6.q16[192323]: policy.c/IsRightsAuthorized/604/Policy
  Домен: Путь; права=Чтение; шаблон="/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0008.jpeg" ...
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/usr/share/ImageMagick-6/locale.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.10//config-Q16/locale.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/etc/ImageMagick-6/locale.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/usr/share/doc/imagemagick-6-common/htmllocale.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/root/.config/ImageMagick/locale.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/root/.magick/locale.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: locale.c/LoadLocaleCache/1209/Configure
  Загрузка файла конфигурации локали "/usr/share/ImageMagick-6/locale.xml" ...
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/usr/share/ImageMagick-6/english.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.10//config-Q16/english.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/etc/ImageMagick-6/english.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/usr/share/doc/imagemagick-6-common/htmlenglish.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/root/.config/ImageMagick/english.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Локаль convert-im6.q16[192323]: locale.c/GetLocaleOptions/856/Locale
  Поиск файла локали: "/root/.magick/english.xml"
2022-03-20T12:33:05+01:00 0:00.010 0.000u 6.9.10 Конфигурация convert-im6.q16[192323]: locale.c/LoadLocaleCache/1209/Configure
  Загрузка файла конфигурации локали "/usr/share/ImageMagick-6/english.xml" ...
2022-03-20T12:33:05+01:00 0:00.010 0.010u 6.9.10 Исключение convert-im6.q16[192323]: blob.c/OpenBlob/2874/Исключение
  невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0008.jpeg': Нет такого файла или каталога
2022-03-20T12:33:05+01:00 0:00.010 0:00.010u 6.9.10 Кэш convert-im6.q16[192323]: cache.c/DestroyPixelCache/1182/Кэш
  уничтожить 
2022-03-20T12:33:05+01:00 0:00.010 0:00.010u 6.9.10 Политика convert-im6.q16[192323]: policy.c/IsRightsAuthorized/604/Policy
  Домен: Путь; права=Чтение; шаблон="/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0008.jpeg" ...
2022-03-20T12:33:05+01:00 0:00.010 0:00.010u 6.9.10 Исключение convert-im6.q16[192323]: blob.c/OpenBlob/2874/Исключение
  невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0008.jpeg': Нет такого файла или каталога
2022-03-20T12:33:05+01:00 0:00.010 0:00.010u 6.9.10 Кэш convert-im6.q16[192323]: cache.c/DestroyPixelCache/1182/Кэш
  уничтожить 
2022-03-20T12:33:05+01:00 0:00.010 0:00.010u 6.9.10 Исключение convert-im6.q16[192323]: convert.c/ConvertImageCommand/3258/Исключение
  нет изображений, определенных `/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0008-th.jpeg'
convert-im6.q16: невозможно открыть изображение `/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0008.jpeg': Нет такого файла или каталога @ error/blob.c/OpenBlob/2874.
convert-im6.q16: нет изображений, определенных `/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0008-th.jpeg' @ error/convert.c/ConvertImageCommand/3258.
chown: невозможно получить доступ к '/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0008-th.jpeg': Нет такого файла или каталога
chmod: невозможно получить доступ к '/var/www/html/piwigo/_data/i/galleries/2022/03_WH/IMG-20220314-WA0008-th.jpeg': Нет такого файла или каталога

Это выглядит как ошибка в convert, если я не ошибаюсь. Есть идеи, как это решить?

В конечном итоге проблема была решена путем замены

convert $dst_folder/$1/$2/$3 -resize 144x144\> $thb_folder/$1/$2/$thb_picture 

на

convert $dst_folder/$1/$2/$3 -thumbnail '144x144>' $thb_folder/$1/$2/$thb_picture

Однако это не объясняет, почему у меня возникли проблемы с опцией resize.

С уважением

Ответ или решение

Решение проблемы с ImageMagick: Ошибка при использовании команды convert

В процессе работы над скриптом, использующим команду convert из пакета ImageMagick, возникла ошибка, связанная с невозможностью открытия изображения:

convert-im6.q16: unable to open image '/var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg': No such file or directory @ error/blob.c/OpenBlob/2874

Анализ проблемы

Исходя из предоставленного описания, скрипт должен был работать с изображениями, находящимися в каталогах, соответствующих текущей дате. Параметры $1, $2 и $3 представляют собой название года, месяца и имя файла соответственно. Однако на практике возникали ситуации, когда изображение внезапно не находилось в указанной директории, хотя вы уверены, что файл существует и имеет необходимые права доступа:

ls -l /var/www/html/piwigo/galleries/2022/03_WH/IMG-20220314-WA0010.jpeg

Такое поведение может быть связано с несколькими факторами:

  1. Проблемы с временными файлами: Возможно, в системе происходила гонка процессов, когда один процесс создавал или удалял файл, а другой в этот момент пытался с ним работать.

  2. Права доступа: Несмотря на то, что права, согласно вашему описанию, выглядят корректно (-rwxrwx---), возможно, что скрипт выполнялся от имени пользователя, который не имел достаточных прав. Разве это не было бы причиной ошибок? Проверьте, действительно ли скрипт выполняется с правильными правами.

  3. Кеширование и ошибки ввода/вывода: Иногда проблемы могут быть связаны с кешем системы или ошибками ввода/вывода. Использование команды -limit memory 32 действительно могло не принести эффект, так как эта проблема не всегда связана с памятью.

  4. Синтаксическая ошибка: Ваша команда convert имела следующий синтаксис:

    convert $dst_folder/$1/$2/$3 -resize 144x144\> $thb_folder/$1/$2/$thb_picture

    Использование \> вместо стандартного > может вызывать конфликт. В большинстве случаев правильным будет использование -thumbnail вместо -resize, как вы уже сделали.

Решение проблемы

Вы правильно обратили внимание, что замена опции -resize на -thumbnail исправила проблему:

convert $dst_folder/$1/$2/$3 -thumbnail '144x144>' $thb_folder/$1/$2/$thb_picture

Почему это сработало?

  1. Разные алгоритмы обработки: Опция -thumbnail обрабатывает изображение по-другому, чем -resize. Она оптимизирует процессе, что может предотвратить ошибки, связанные с размером фотографии и производительностью.

  2. Обработка ошибок: Команда -thumbnail делает дополнительные проверки и может иметь более гибкие алгоритмы обработки, что может снизить вероятность возникновения ошибок, связанных с отсутствием файла.

Заключение

В будущем, если вы столкнетесь с неожиданными ошибками, связанными с обработкой изображений в ImageMagick, рекомендуется:

  • Тщательно проверять доступные права на файлы.
  • Следить за гонками процессов в многопоточном окружении.
  • Использовать опцию -thumbnail для создания миниатюр изображений, если ваши требования это позволяют.

Следите за корректной работой скриптов и используйте альтернативные подходы, чтобы избежать повторения этих ошибок.

Оцените материал
Добавить комментарий

Капча загружается...