Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Как установить качество Jpeg картинки?


Автор: everyone 1.3.2005, 22:28
Ситуация такая:
Код

my $query=new CGI;                                      #переменная CGI

my $big_pict=$query->param('wall');                     #присваиваем тело картинки $big_pict

my $big_pict=new GD::Image->newFromJpeg($big_pict);     #картинка(1024*768) в $big_pict

my $lit_pict=new GD::Image(154, 115);                   #новая картинка

$lit_pict->copyResized($big_pict,0,0,0,0,154,115,1024,768); #уменьшим полученную картинку и присвоим её переменной $lit_pict


Под Windows всё работает нормально, но под Linux полученная картинка получается плохого качества, а вновь созданная(154, 195) имеет лишь один цвет - чёрный или синий.
В метаданных картинки(комментарий) написано CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality. Наверняка всё это из-за качества установленного по умолчанию, как его можно изменить средствами GD?

Автор: GoodBoy 2.3.2005, 11:16
Я советую воспользоваться модулем Image::Magick. Он более продвинут для работы с графикой. И Вин/*никс версии не различаются по качеству картинок. smile

:-)))))))))

Автор: everyone 2.3.2005, 19:06
Дело в том, что из обработки графики, кроме изменения размера картинки, мой скрипт делать ничего не будет, так что выбор инструментов здесь не критичен. Хотя попробую и через Image::Magick smile. Буду благодарен за какую-нибудь документацию, желательно на русском.

Цитата
И Вин/*никс версии не различаются по качеству картинок.

И тем не менее, почему такой результатhttp://smilies.sofrayt.com/^/aiw/dont-know.gif? Скрипт проверял на разных платформах в идентичных условияхhttp://smilies.sofrayt.com/^/aiw/swoon.gif.

Автор: everyone 2.3.2005, 22:18
Основательно покопался в документации по GD smile.
Для управления палитрой есть параметр TrueColor.
Перед созданием нового изображения нужно лишь указать его значение:
Код

open(jpeg, "/path/img/../../my.jpg") || die q~don't open~;      #откроем файл

$img = GD::Image->trueColor(1);                                 #изменим палитру из Default на True

$img=newFromJpeg GD::Image('jpeg');                             #$img - собственно и есть полноценное изображение.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)