Как я могу исправить эту ошибку с ImageMagick? - PullRequest
3 голосов
/ 13 сентября 2011

Я использую ImageMagick для преобразования файла RAW (расширение * .nef) в изображение JPEG.На самом деле я делаю это изнутри PHP, но не использую расширение IMagick (я потратил слишком много времени, стуча головой об стену, пытаясь заставить работать то, что в итоге я просто сдался).Вместо этого я использую функцию PHP exec() для вызова ImageMagick из командной строки и просто выполняю там манипуляции.

В любом случае, я написал простой PHP-скрипт для этого - чтобы преобразовать изображение NEF вJPEG изображение - и это сработало!Я провел через несколько тестов.Когда JPEG не существует, он создал его.Когда JPEG уже существовал, он переписал его.Отлично!

До сегодняшнего дня.Я сделал этот сценарий в прошлую пятницу.Сегодня (понедельник), когда он пытался его использовать, он перестал работать.Я буквально изменил ничего об этом, но пару дней спустя он провалил все те же тесты, которые я проводил в пятницу.Я могу получить вывод из командной строки, и это ошибки, с которыми он сталкивается на этот раз:

Magick: `%s' (%d) dcraw.exe -4 -w -O "C:/Windows/TEMP/magick-iDvVnHw-.ppm" "C:/Windows/TEMP/magick-hYeYwWRd" @ error/utility.c/SystemCommand/2094.
Magick: delegate failed `dcraw.exe -4 -w -O "%u.ppm" "%i"' @ error/delegate.c/InvokeDelegate/1058.
Magick: unable to open image `C:/Windows/TEMP/magick-iDvVnHw-.ppm': No such file or directory @ error/blob.c/OpenBlob/2588.
Magick: missing an image filename `E:\test.jpg' @ error/convert.c/ConvertImageCommand/3015.

Эти ошибки не появлялись в пятницу.Почему они появляются сейчас?Что они имеют в виду?И что я могу с ними сделать?Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 29 июля 2015

У меня была похожая ошибка в Linux:

No such file or directory @ error/blob.c/OpenBlob/2709. convert: no images defined `/tmp/transform_5c88983-1.jpg' @ error/convert.c/ConvertImageComman

Проблема была в том, что в моем немецком имени персонажа был специальный символ:

images/1/14/Ministerium-für-Bildung.jpg

Я зашел в папку и создал символическую ссылку без символа:

ln -s Ministerium-für-Bildung.jpg Ministerium-fr-Bildung.jpg
0 голосов
/ 13 сентября 2011

Ну, я смог решить это.Я сделал две вещи, и я не совсем уверен, что первая вещь имела какое-то влияние или нет, но я упомяну и то, и другое для всех, кто борется.Во-первых, поскольку у него возникли проблемы с временным файлом, я изменил параметры безопасности / разрешения Windows для папки C:\Windows\TEMP, чтобы явно разрешить полный доступ к IIS_USER, а также Everyone.

.во-вторых, и что более важно, я изменил команду, которую передавал, в exec()Ранее моя команда выглядела примерно так:

$cmd  = 'C: & "C:\\Program Files (x86)\\ImageMagick\\convert.exe" ';
$cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1';
exec($cmd, $output, $return);

Итак, вместо этого я указал новый каталог "temp" и установил текущий путь, например, так:

$cmd  = 'SET MAGICK_TMPDIR=E:\\Temp&SET path=C:\\Program Files (x86)\\;%path%& ';
$cmd .= '"C:\\Program Files (x86)\\ImageMagick\\convert.exe" ';
$cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1';
exec($cmd, $output, $return);

И это сделалобмануть!Сценарий снова работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...