2016-06-02 2 views
0

Я хочу, чтобы изображение отображалось, сохраняя его соотношение сторон, повторно изменяя его размер, но изображение выглядит растянутым. У меня три изображения на 50 на 50. Я хочу, чтобы левое изображение было изменено, поддерживая его соотношение сторон. Два других изображения будут отображаться вверх и вниз параллельно первому изображению. Я думаю, что мозаика() построит четыре блока. но я хочу, чтобы три блока, в fitst-блоке, появится первое изображение, и оно будет изменено до конца, а в следующих двух блоках будут отображаться два других изображения вверх и вниз и показать их параллельно первому. Ниже приведен кодКак управлять искаженным и растянутым изображением в graphicsmagick node.js

gm() 
     .in('-page', '+0+0') 
     .in('-resize', '50x100!') 
     .in('http://localhost:8080/image1') 
     .in('-page', '+50+0') 
     .in('http://localhost:8080/image2') 
     .in('-page', '+50+50') 
     .in('http://localhost:8080/image3') 
     .mosaic() 
     .write('C:/images/output.jpg', function (err) { 
      if (err) console.log(err); 
     }); 

Я хочу изображения, как показано ниже, но с сохранением соотношения сторон, черное изображение выглядит растягивается, я не хочу быть растянут, и черное изображение должно охватывать всю левую область до конца

enter image description here

Если я удалю! изображение, то похоже, я хочу, изображение, как указано выше, но не растягивается

enter image description here

+0

Удалите '!', Если вы хотите сохранить соотношение сторон. Включите '!', Если растяжение разрешено. –

+0

@MarkSetchell, Thankyou. Если я его удалю, то мне все же нужно увеличить длину изображения до конца с сохранением соотношения сторон. Как я могу это достичь? –

+0

Добавьте '-extent MxN' после изменения размера, чтобы заполнить область - возможно, установите' -gravity center' перед добавлением '-extent'. Диаграмма поможет ;-) –

ответ

0

Я не использую node, но я думаю, что вы будете иметь возможность адаптировать это:

сделать наши три изображения:

convert -size 50x50 -background black -fill white -gravity center -pointsize 36 label:"1" image1.jpg 
convert -size 50x50 -background red -fill white -gravity center -pointsize 36 label:"2" image3.jpg 
convert -size 50x50 -background red -fill white -gravity center -pointsize 36 label:"3" image3.jpg 

Теперь размер и организовать:

convert image1.jpg -resize x100 -gravity center -extent 50x100 \(image2.jpg image3.jpg -append \) +append result.png 

enter image description here

По существу, я делаю image1 100 пикселей в высоту с -resize x100 и затем экстрагированием центральной 50 пикселя широкой полосы посередине с -gravity center -extent 50x100. Затем в круглых скобках и «on-the-side» Я загружаю image2 и image3 и размещаю один под другим с помощью -append. Затем эта пара изображений добавляется справа от исходного изображения с +append, и результат записывается в result.png.

+0

Марк, важно сначала сделать три изображения, а затем изменить размер и упорядочить? –

+0

Совсем нет! Мне просто нужны были некоторые изображения, чтобы показать вам, как я это сделаю - у меня нет ваших. –

Смежные вопросы