parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

2 PAF: Кстати не обидишься, если я ещё про один баг спрошу :)

Yuriy V. Vorontsov (Че) 25.03.2004 18:00

Я разработал perl-скрипт, который с помощью Image::Magick уменьшает картинки и пихает их в STDOUT. Т.е. если смотреть STDOUT то чистого вида картинка (бинарный код верен, на экране рисунок появляется).

Но если сделать следующее (кстати говоря описанное в документации, response:body):
$response:body[^file::cgi[$script_path]]
Или с file::exec:
$response:body[^file::exec[$script_path;
  $.stdin[]
  $.CGI_X[$x_size]
  $.CGI_Y[$y_size]
  $.CGI_IMAGEPATH[$image_name]
]]
То в STDOUT parser-скрипт возвращает, в лучшем случае покоцанный бинарный код уменьшенного графического файла, причём на 30% меньше исходного...

Дело даже не в STDOUT’е скрипта, объект класса file созданные выше описанным конструктором, в поле $file.text выводит собственно этот же покоцанный бинарный код рисунка (уменьшенного). Обрезание, как бы грубо это не звучало, происходит при появлении нулевых символов ‘\0’, что в свою очередь наводит на мысль, как возвращать STDOUT скрипта не как текст, а как бинарный код.

В чём тут может быть дело, может этого просто не возможно сделать в принципе, и я успокоюсь, но по логике такая возможность должна существовать (по крайней мере, по моей :)), достаточно взглянуть на такую возможность Parser'а:
$square[^image::create(100;100;0x000000)]
^square.circle(50;50;10;0xFFFFFF)
$response:body[^square.gif[]]
Помоему, логично, что бинарник можно возвращать без урезаний.