The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Изменение размера графического изображения на Parser 3 (web cgi parser image perl)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: web, cgi, parser, image, perl,  (найти похожие документы)
From: Eugene Spearance <spearance@tura.ru> Subject: Изменение размера графического изображения на Parser 3 Изменение размера графического изображения. Я давно бился, как наверно и многие, над тем чтобы научиться делать превью для картинок. Ведь это бы дало возможность создавать с помощью Parser картиночные и фото галлереи, размещать картинки в новостях и т.д. Мне нужен был универсальный инструмент, который бы не цеплялся к расширению файла (jpg, gif, png, tiff), и что самое главное, чтобы картинки уменьшались пропорционально, в зависимости от указанной ширины или длинны. И вот решение для этой задачи нашлось. Отмечу сразу, что тут дело не обошлось без Perl, но чтож поделаешь, я предлагал эту функцию внести еще во вторую версию Parser но, к сожалению, ее не появилось ни во втором, ни в третьем. Итак начнем. Для начала создаем форму закачки картинки: <html><head> <title>Image resize</title> </head> <body> <form method="POST" enctype="multipart/form-data"> <br>Картинка: <input type="file" name="pict" size="50" maxlength="100" style="border-width: 1px; border-color: black;"> <br><br>Ширина картинки: <input type="text" name="size" value="200" size="5" maxlength="10" style="border-width: 1px; border-color: black;"> &nbsp;&nbsp;&nbsp; <input type="submit" value="Resize" name="posted" style="height: 20px; border-width: 1px; border-color: black;"> </form> #Обработка полученных из формы данных ^if(def $form:pict){$str[$form:pict.name] ^form:pict.save[binary;путь_для_сохранения_файла/1.^str.right(3)] $f[^file::exec[/путь_где_лежит_скрипт/images.pl;;1.^str.right(3);$form:size]] $response:refresh[$.value[0] $.url[/URL_страницы]] #Если отключить ремарку то на экран будут выводиться сообщения о #выполнении и ошибки ^rem{$f.text} } #Вывод результата <table> <tr><td><img src="/путь_превью/1.gif" border="0"></td><td>&nbsp;&lt;- GIF картинка </td></tr> <tr><td><img src="/путь_превью/1.jpg" border="0"></td><td>&nbsp;&lt;- JPG картинка </td></tr> <tr><td><img src="/путь_превью/1.png" border="0"></td><td>&nbsp;&lt;- PNG картинка </td></tr> </table> </body> </html> Это было самое начало, теперь непосредственно к самому скрипту images.pl #!/usr/bin/perl my $dst_path="/путь_куда_записываем_превью"; my $src_path="/путь_откуда_берем_картинку"; use Image::Magick; #Присваеваем переменным переданные значения $in_img = $ARGV[0]; $in_img =~ s/[^\d\w\_\-\.]//g; $tumb_xsize = $ARGV[1]; #Проверяем есть ли файл картинки if (!(-f "$src_path/$in_img")){ print "Error: File $in_img not found\n"; exit; } my($q, $x); $q = Image::Magick->new; $x = $q->Read("$src_path/$in_img"); print "$x" if "$x"; #Если картинка JPG устанавливаем качество 75% if ( $in_img =~ /^.*\.(jpg|jpeg)$/i){ $q->Set(quality=>75); } #Получаем размеры картинки ($x_size, $y_size) = $q->Get('width', 'height'); #Если один из размеров 0 значит картинка битая, удаляем ее if ($x_size == 0 || $y_size == 0){ unlink("$src_path/$in_img"); get_error("Невозможно получить размер изображения в файле $in_img."); } #Расчитываем пропорционально уменьшеный(увеличеный) размер $scale = $tumb_xsize*$y_size/$x_size; if ($scale == 0){ $scale = 1; } #Меняем размер согласно пересчитанным размерам $x = $q->Scale(width=>($tumb_xsize), height=>($scale)); print "$x" if "$x"; #Сохраняем результат $x = $q->Write("$dst_path/$in_img"); print "Write: $x" if "$x"; print "Resize complite...\n"; Это собственно все. Если вы сохраняли images.pl средствами Windows не забудьте избавиться от символов перевода каретки, иначе скрипт работать не будет. В своем примере для сжатия jpg я использовал 75% сжатия, вы можете вынести этот параметр и передовать его скрипту... Вот, как говорится, и сказочке конец, а кто хочет посмотреть рабочую версию, то милости просим http://www.spearance.tura.ru/parser3/pictures/

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру