Imagemagick ile beyaz boşluk nasıl eklenir?


15

Bu OUTPUT'u bu INPUT'tan almak için "convert" (?) Hangi parametrelere ihtiyaç duyar?

GİRİŞ:

resim açıklamasını buraya girin

ÇIKTI:

resim açıklamasını buraya girin

Yanıtlar:


8

Görüntülerin sağ tarafla aynı hizada olmasını istemediğim için farklı bir yaklaşım kullanmak zorunda kaldım (ImageMagick'in compositearacı):

convert -size 500x500 xc:white canvas.png
convert canvas.png in.png -geometry +200+200 -composite out.png

-sizeİstediğiniz son görüntü boyutu olmalı, canvas.pngboş bir beyaz tuval, in.pngdoldurmak istediğiniz görüntü ve -geometrykonumlandırma ofseti olmalıdır.


15

ImageMagick sürümüm '6.7.8-0 2012-07-04 Q16'. Docu'ya göre @kev komutunun cevabı işe yaramalı:

 convert in.png -gravity east -extent 520x352 out.png

Bununla birlikte, çoğu ImageMagick sorusunda olduğu gibi, aynı hedefe farklı yollarla ulaşabilirsiniz. Bunun montagegibi kullanabilirsiniz :

 montage null: in.png -tile 2x1 -geometry +17+0 out1.png

Bu, ile birleştirmek için özel 'null:' resmini kullanır in.png.


Farklı bir boyuta sahip her bir giriş resmi için convertgeçmeniz gereken değerleri yeniden hesaplamanız gerektiği doğrudur -extent.

identify -formatGörüntünün boyutlarını almak için ilk kullanım :

 identify -format '%Wx%H' in.png

Bu şöyle bir şey döndürmelidir:

 449x352

Tamam, şimdi son 520x352değeri elde etmek için istediğiniz 71 pikseli eklemeniz gerekir . Ancak bu hesaplamayı kendi beyninizde yapmanız gerekmez:

ImageMagick kurtarmaya !, ve sihirli hesaplama yetenekleri ... :-)

identify -formatKomutu sizin için bu hesaplamayı yapmasını söyleyebilirsiniz :

 identify -format '%[fx:W+71]x%H'

Bu size aşağıdakilerin bir sonucunu vermelidir:

 520x352

Herhangi bir resmin sol tarafına yalnızca 71 piksel genişliğinde bir 'beyaz şerit' eklemek / eklemek istediğinizi varsayarsak, aşağıdaki tek komut satırını kullanabilirsiniz:

 convert \
    in.png \
   -gravity east \
   -background white \
   -extent $(identify -format '%[fx:W+71]x%H' in.png) \
    out2.png

İşte bu kadar! Bir komut satırı (dürüst olmak üzere 2 komutu kapsar) ve 71piksel beyaz şeridinizi her birine otomatik olarak sihirli bir şekilde eklemek için bir dizindeki tüm PNG'leriniz, JPEG'leriniz, GIF'leriniz ...

 for i in *.png *.jpeg *jpg *.gif; do
    convert \
       ${i} \
      -gravity east \
      -background white \
      -extent $(identify -format '%[fx:W+71]x%H' ${i}) \
       $(convert ${i} -format "71-pixels-padded-left---%t.%e" info:)
 done

Her görüntü için çıktısı aynı dosya tipinde kalır. Tabii ki tüm çıktıları PNG (veya istediğiniz her şey) olarak uygulayabilirsiniz. Sadece %t.%ekomutun bir kısmını %t.png...


8

Belgeler: http://www.imagemagick.org/Usage/crop/#extent

convert in.png -gravity east -extent 500x352 out.png

Teşekkürler!! Peki ya resmim 500x352 değilse - boyut değişirse?
gasko peter

1
Sadece nasıl yapılacağını göstereceğim.
kev

@kev: Komutunuz @gasko peter'in istediğini tam olarak yapmıyor. Kullanmalıydın -extend 520x352. 'Doğru yön' için +1 olsa da :-P
Kurt Pfeifle

sed 's # -extend # -extent # g'
Kurt Pfeifle

-background transparentSaydam bir arka planı korumak için eklemeliydim .
tremby

0

Bu komutu tanımladım .bash_profile. Genişlik ve yükseklik olarak istediğiniz dolgudan son görüntü boyutunu otomatik olarak hesaplar (sıfırlarla çalışır):

# arithmetic with awk
calc() { awk "BEGIN { print $* }"; }

# pad an image
img_pad() {
    local width height pw ph 
    [ $# -lt 3 ] && { echo "Usage: img_pad <Input> <WxH> <Output>"; return; }

    # parse current size and padding
    IFS=x read width height <<< "$(identify "$1" | awk '{print $3}')"
    IFS=x read pw ph <<< "$2"

    # new widht and height
    width=$(calc "$width + 2*$pw")
    height=$(calc "$height + 2*$ph")

    echo "Converting '$1' to '$3' with size ${width}x${height} (+w=${pw}, +h=${ph})."
    convert "$1" -gravity center -extent "${width}x${height}" "$3"
}

Örnek kullanım:

# pad 50px left and right, no vertical padding
img_pad in.png 50x0 out.png 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.