Ученик (105)

Генерирую изображение в PERL. Почему оно искажается? Можно ли как-то исправить?

Код:


#!/usr/bin/perl -w
use CGI;

$cgi = new CGI;

$file = $ENV{'DOCUMENT_ROOT'}."/m.jpg";

unless (-e $file)
{
print $cgi->header();
print "NE";
exit;
}

open(IMAGE, $file);
$size = -s $file;
read IMAGE, $data, $size;
close(IMAGE);

print $cgi->header(-type => 'image/jpg');

print $data;


Появляется сильно искаженное изображение... Где ошибка?
Регистрируйтесь, делитесь ссылками в соцсетях, получайте на WMR кошелек 20% с каждого денежного зачисления пользователей, пришедших на проект по Вашей ссылке. Подробнее
После регистрации Вы также сможете получать до 120 руб за каждую тысячу уникальных поисковых переходов на Ваш вопрос или ответ Подробнее
ОТВЕТЫ
Знаток (425)
PERL - язык для работы с текстами. Поэтому он отдает файлы в ASCII режиме (по умолчанию), а не в BINARY, как следовало бы отдавать изображения. Поэтому, после открытия файла, надо перевести его в бинарный режим:


binmode IMAGE;