Вопрос или проблема
У меня возникли проблемы в скрипте с командой 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
Такое поведение может быть связано с несколькими факторами:
-
Проблемы с временными файлами: Возможно, в системе происходила гонка процессов, когда один процесс создавал или удалял файл, а другой в этот момент пытался с ним работать.
-
Права доступа: Несмотря на то, что права, согласно вашему описанию, выглядят корректно (
-rwxrwx---
), возможно, что скрипт выполнялся от имени пользователя, который не имел достаточных прав. Разве это не было бы причиной ошибок? Проверьте, действительно ли скрипт выполняется с правильными правами. -
Кеширование и ошибки ввода/вывода: Иногда проблемы могут быть связаны с кешем системы или ошибками ввода/вывода. Использование команды
-limit memory 32
действительно могло не принести эффект, так как эта проблема не всегда связана с памятью. -
Синтаксическая ошибка: Ваша команда
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
Почему это сработало?
-
Разные алгоритмы обработки: Опция
-thumbnail
обрабатывает изображение по-другому, чем-resize
. Она оптимизирует процессе, что может предотвратить ошибки, связанные с размером фотографии и производительностью. -
Обработка ошибок: Команда
-thumbnail
делает дополнительные проверки и может иметь более гибкие алгоритмы обработки, что может снизить вероятность возникновения ошибок, связанных с отсутствием файла.
Заключение
В будущем, если вы столкнетесь с неожиданными ошибками, связанными с обработкой изображений в ImageMagick, рекомендуется:
- Тщательно проверять доступные права на файлы.
- Следить за гонками процессов в многопоточном окружении.
- Использовать опцию
-thumbnail
для создания миниатюр изображений, если ваши требования это позволяют.
Следите за корректной работой скриптов и используйте альтернативные подходы, чтобы избежать повторения этих ошибок.