Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> use Image Magick, Наращивание боков 
:(
    Опции темы
MaxPayne
Дата 22.9.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

Репутация: нет
Всего: нет



Смысл казалось бы простой, но полазив по форумам не нашел ответа или нашел не работающие. 

Человек загружает картинку любого размера мне надо сделать из нее 500х375. 

Проблема: Если картинка после ПРОПОРЦИОНАЛЬНОГО уменьшения получается 400х375 или 500х200 - не могу нарастить края до 500х375

Пример кода:

Код


my $image = Image::Magick->new;
$x = $image->Read("$pathimg$randomname");
($img_width, $img_height) = $image->Get('width', 'height');

$scalemax = $scalew = $img_width/500;
$scaleh = $img_height/375;
if ($scalemax < $scaleh){$scalemax=$scaleh;}
$res_height=int($img_height/$scalemax);
$res_width=int($img_width/$scalemax);
$image->Scale(width=>"$res_width", height=>"$res_height");

if ($res_width < 500){$res_width=500;}
if ($res_height < 375){$res_height=375;}

????????????

$image->Crop('500x375');


На место вопросов пробовал ставить $image->Scale(Geometry=>'$res_width."x".$res_height'); , но не пашет.

Пробовал и без кавычек $image->Scale(Geometry=>$res_width."x".$res_height); 

Надо нарастить белыми полями, а не растянуть вот так $image->Scale(width=>"$res_width", height=>"$res_height");
PM MAIL WWW ICQ   Вверх
shamber
Дата 22.9.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



MaxPayne, а нельзя создать пустую с белым фоном, а поверх нее в центре положить уменьшенную?

Это сообщение отредактировал(а) shamber - 22.9.2010, 18:12
PM MAIL Jabber   Вверх
MaxPayne
Дата 22.9.2010, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

Репутация: нет
Всего: нет



я после все преобразований накладываю поверх png (500х375) - так вот он оказывается обрезанным, т.к. не хватает размера.
PM MAIL WWW ICQ   Вверх
shamber
Дата 22.9.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



понял что вас не понял....

Это сообщение отредактировал(а) shamber - 22.9.2010, 18:23
PM MAIL Jabber   Вверх
shamber
Дата 22.9.2010, 22:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Надеюсь то что нужно
Код

#!/usr/bin/perl -w
use strict;
use Image::Magick;
my $background=Image::Magick->new;
my $file=Image::Magick->new;
$background->Read('new.png');
$file->Read('new2.png');
#получаем размеры файлов
my ($x,$y) = $background->Get('base-columns','base-rows');
my ($x1,$y1) = $file->Get('base-columns','base-rows');

#считаем максимально возможный коэффициент
my $xo = $x/$x1;
my $yo = $y/$y1;
my $scale;
if($xo>=$yo){
    $scale = $yo;
}else{
    $scale = $xo;
}
#получаем размер для масштабируемого изображения
$xo = $scale*$x1;
$yo = $scale*$y1;
#получаем координаты для размещения в центре
$x = ($x-$xo)/2;
$y = ($y-$yo)/2;
#масштабируем
$file->Resize(width=>$xo, height=>$yo);
#накладываем
$background->Composite(image=>$file,compose=>'over',geometry=>"+$x+$y");
#сохраняем
 $x = $background->Write("./new3.png");
 warn "$x" if "$x";


       файл new.png                              файл new2.png
просто png с белым фоном.              изменяемый файл.                              результат
  
user posted image        user posted image       user posted image



Это сообщение отредактировал(а) shamber - 22.9.2010, 22:29
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0875 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.