Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как вырезать тумбу c помощью ImageMagick ?
цитата
07/08/12 в 16:01
 Woland
Сабж такой - надо из оригинала картинки, независимо от пропорции оригинала, сделать тумбу размером 150х200 (ну вырезать по центру, как режет любой ротатор на автомате) и применить к ней после ресайза вот такое: -filter Blackman -modulate 110,102,100 -sharpen 1x1 -enhance

Что надо передать IM чтобы он скропил до пропорции нужной, сресайзил, применил строчку эту, параметры, и сохранил с качеством 85 ?
Типа там convert 1.jpg -crop бла-бла-бла ...

Сделать хочется именно IM т.к. софтина на дельфях, не php, GD не предлагать icon_smile.gif
Подскажите, а то заёбся читать мануал ImageMagick'а icon_smile.gif

p.s. Вопрос именно как скропить, сресайзить через IM, как это приморозить к делфям понятно icon_smile.gif
цитата
07/08/12 в 16:25
 Pentarh
Там сначала надо высчитать пропорции кратные 150х200 и кропнуть до них с нужным параметром -gravity center, чтобы потом ресайз через -thumbnail не исказил изображение.

То есть, предварительно надо узнать исходный размер. Потом высчитать x,y и -crop x,y -gravity center -thumbnail 150,200 (и дальше че там)

Пишу по памяти, мог ошибиться в деталях. Но я делал так
цитата
07/08/12 в 17:01
 Woland
А попроще никак ?

Вот у типа бложек http://valokuva.org/?p=33 вроде получается лихо и просто - но я нихера не вижу таких команд в IM icon_smile.gif
цитата
07/08/12 в 19:28
 Ara Man
так у него там библиотека установлена, это не команды ИМ

вот тут почитай
http://valokuva.org/?page_id=50
цитата
07/08/12 в 19:37
 Woland
Да, затупил ... Так что получается, самый быстрый путь это получить ширину и высоту исходника, сравнить и после этого делать два ресайза (или 1 ресайз и 1 кроп), где первый ресайз только ширины или только высоты (в зависимости от того, что больше у исходника) ? Или есть методы побыстрее и в меньше шагов ?
цитата
07/08/12 в 20:35
 Stek
1. получаешь физический размер картинки
2. берешь размер тумбы и в пропорции накладываешь на размер из пункта 1
3. режешь по полученным координатам, указывая размер тумбы на выходе и добавляя фильтры.

т.е. все за одну операцию делается.
цитата
07/08/12 в 20:46
 JM
Woland: сначала кроп правильный, а потом ресайз
цитата
13/08/12 в 08:02
 adminZ
тоже надо было такое сделать в свое время, алгоритм следующий (шелл скрипт)

запускать с параметрами
./resize.sh original.jpg 150 200 thumb.jpg

#!/bin/sh

# $1 - имя исходной фотки
# $2 - требуемая ширина тумбы
# $3 - требуемая высота тумбы
# $4 - имя тумбы

w=`identify $1 | cut -f 3 -d " "|cut -f 1 -d "x"` # узнаем ширину фотки
h=`identify $1 | cut -f 3 -d " "|cut -f 2 -d "x"` # узнаем высоту фотки

r1=`echo $w / $2 | bc -l` # находим разницу между шириной фотки и требуемой шириной тумбы
r2=`echo $h / $3 | bc -l` # находим разницу между высотой фотки и требуемой высотой тумбы

res=`echo "$r2 > $r1" | bc -l`

if [ $res -eq 1 ]; then # Если разница высот больше то делаем ресайз по ширине
convert -resize $2"x" -gravity center -crop $2"x"$3+0+0 $1 $4
else # и наоборот, если разница шырин больше то делаем ресайз по высоте
convert -resize x$3 -gravity center -crop $2"x"$3+0+0 $1 $4
fi
цитата
13/08/12 в 17:38
 CABMIT
Блин, что-то у вас всё так сложно... icon_smile.gif

Делается всё одной командой: сначала ресайзится до нужного размера с сохранением пропорций, а потом по бокам (или сверху-снизу) отрезается лишнее. и не надо знать никаких исходных размеров

Код:
convert source.jpg -resize "150x200^" -gravity center -extent 150x200 -filter Blackman -modulate 110,102,100 -sharpen 1x1 -enhance dest.jpg
цитата
14/08/12 в 14:51
 adminZ
Есть куча вариантов как это сделать, то был только один из них icon_smile.gif


Эта страница в полной версии