Невозможно выполнить "bin": неверный дескриптор файла (Perl) - PullRequest
0 голосов
/ 10 октября 2011

Я пытаюсь решить проблему на один день, и после многих беспорядочных поисков я здесь!

Я пытаюсь использовать двоичное преобразование из набора ImageMagick на скрипте Perl для обрезки изображения.

Когда я попробую этот простой код:

use Shell qw(convert);

convert("-crop", "50%x50%", $Src, "new_image.png");

На одном файле, который отлично работает.

Но когда я пытаюсь реализовать его в проекте, над которым я работаю (я сейчас на стажировке, исправляю функции), появляется сообщение «Не удается выполнить преобразование: неверный дескриптор файла»!

Я проверил путь к $ Src, попытался заменить жестким кодом, установил PATH, ничего не изменилось.

НО

если я попробую простое:

 convert(-h);

Это прекрасно работает! Я предположил, что что-то в предыдущем коде может мешать, но не уверен.

Ps: проект запускается с php-сервера, размещенного на локальном компьютере, но если он что-то изменит, но если никогда!

Большое спасибо за чтение и большое спасибо за ответ!

--- EDIT --- Фактический код в соответствии с просьбой

Use Shell qw(convert);

.
.
.

sub checkSubScreen
{
#Parameters init
my ($this, $Scr0, $Scr1) = @_;

    convert("-crop", "50%x50%", $Scr0, "tmp/scr0_crp.png");
    convert("-crop", "50%x50%", $Scr1, "tmp/scr1_crp.png");
....

Я не могу показать вам весь код, он действительно слишком большой, но просто спросите, и я постараюсь показать!

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Сообщение об ошибке приходит от Shell.Я не знаю, что кто-то думает, что они получают, используя Shell вместо более традиционного system / qx / pipe open / IPC::Open3, и, в частности, я не вижу того, что вы получаете отиспользуя Shell.

Попробуйте использовать более традиционный системный вызов

@args = ("50%x50%", $Src, "new_image.png");
system("convert", @args) and warn "convert @args: exit code was $?";

и посмотрите, появляется ли более традиционное сообщение об ошибке.

0 голосов
/ 11 октября 2011

Хорошо, наконец, я решил использовать PerlMagick Api, он работает, я думаю, что моя проблема была связана с окружающей средой и, вероятно, очень специфична.

Спасибо за ответы!

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