A completare gli angoli della foto con ImageMagick

voti
8

nella mia applicazione Rails voglio avere una sezione profilo simile come Facebook, dove le immagini caricate sono thumbnailed e angolo-arrotondato automaticamente. Sto utilizzando il convertprogramma di utilità di ridimensionare le immagini in miniatura, ma c'è la possibilità di arrotondare gli angoli troppo? Grazie.

È pubblicato 05/04/2009 alle 04:56
fonte dall'utente
In altre lingue...                            


4 risposte

voti
4

Ecco alcuni esempi angoli arrotondati: http://www.imagemagick.org/Usage/thumbnails/#rounded_border . Avrai bisogno di creare una maschera di qualche tipo (a mano o utilizzando gli strumenti di disegno) e poi sovrapporre sul vostro immagine.

Risposto il 05/04/2009 a 05:04
fonte dall'utente

voti
7

Facebook non modificare immagini di avere gli angoli arrotondati. Invece, usano HTML e CSS per applicare questa immagine su ogni immagine utente: http://www.facebook.com/images/ui/UIRoundedImage.png

Se si controlla UIRoundedImage.png, troverete che ogni "piazza" è costituito da un centro trasparente, e gli angoli opachi che sono destinate a corrispondere allo sfondo su cui l'immagine utente riposerà. Per esempio, se l'immagine utente si trova su uno sfondo bianco, poi bianco angoli arrotondati opache saranno sovrapposti sull'immagine dell'utente.

La tecnica CSS per l'utilizzo di solo una parte specifica UIRoundedImage.pngsi chiama "sprite CSS". Si può leggere di più su di esso qui: http://www.alistapart.com/articles/sprites/

Risposto il 05/04/2009 a 05:32
fonte dall'utente

voti
0

Ecco il codice che ho scritto per arrotondare gli angoli con ImageMagick utilizzando Perl. Dovrebbe porta a Ruby abbastanza facilmente:

http://article.gmane.org/gmane.comp.video.graphicsmagick.apis/322

Risposto il 08/02/2011 a 00:24
fonte dall'utente

voti
9

soluzione universale

Questa soluzione funziona con le immagini trasparenti e non trasparenti. Per aggiungere 15 pixel di raggio angoli arrotondati per original_picture.pngi quali è un quadro 100x100:

convert -size 100x100 xc:none -draw "roundrectangle 0,0,100,100,15,15" mask.png
convert original_picture.png -matte mask.png \
  -compose DstIn -composite picture_with_rounded_corners.png

Questa soluzione è stata data da PM qui: https://stackoverflow.com/a/1916256/499917

soluzione elegante, non funziona con le immagini trasparenti

Questa soluzione funziona senza alcuna immagine intermedia. Che carino! Ma sarà interrompere la trasparenza del quadro originale. Così utilizzare solo quando si è sicuri che l'immagine non è trasparente.

Si supponga di voler angoli arrotondati con raggio 15px:

convert original_picture.png \
  \( +clone  -alpha extract \
    -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \
    \( +clone -flip \) -compose Multiply -composite \
    \( +clone -flop \) -compose Multiply -composite \
  \) -alpha off -compose CopyOpacity -composite picture_with_rounded_corners.png

Per comodità, ecco quello che in genere si fare in Ruby o di alcune altre lingue:

in_pic = "original_picture.png"
out_pic = "picture_with_rounded_corners.png"
radius = 15
cmd = "convert #{in_pic} \\( +clone  -alpha extract " +
        "-draw 'fill black polygon 0,0 0,#{radius} #{radius},0 fill white circle #{radius},#{radius} #{radius},0' " +
        "\\( +clone -flip \\) -compose Multiply -composite " +
        "\\( +clone -flop \\) -compose Multiply -composite " +
        "\\) -alpha off -compose CopyOpacity -composite #{out_pic}"
`#{cmd}`

Fonte: http://www.imagemagick.org/Usage/thumbnails/#rounded

Risposto il 24/09/2013 a 22:17
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more