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 не предлагать
Подскажите, а то заёбся читать мануал ImageMagick'а
p.s. Вопрос именно как скропить, сресайзить через IM, как это приморозить к делфям понятно
цитата
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
цитата
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
Блин, что-то у вас всё так сложно...
Делается всё одной командой: сначала ресайзится до нужного размера с сохранением пропорций, а потом по бокам (или сверху-снизу) отрезается лишнее. и не надо знать никаких исходных размеров
Код:
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
Есть куча вариантов как это сделать, то был только один из них
Новая тема
Ответить
Эта страница в полной версии