Rotunjirea colțuri de imagini cu ImageMagick

voturi
8

în aplicația mea Rails Vreau să aibă o secțiune profil similar cum ar fi Facebook în cazul în care imaginile încărcate sunt rotunjite și pictogramã-corner automat. Sunt folosind convertutilitarul pentru a reduce dimensiunile imaginilor în miniaturi, dar există o opțiune pentru a rotunji colțurile lor prea? Mulțumiri.

Întrebat 05/04/2009 la 04:56
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
4

Iată câteva exemple de colțuri rotunjite: http://www.imagemagick.org/Usage/thumbnails/#rounded_border . Va trebui să creați o mască de un anumit fel (fie manual sau cu ajutorul instrumentelor de desen) și apoi suprapune - l pe imaginea ta.

Publicat 05/04/2009 la 05:04
sursa de către utilizator

voturi
7

Facebook nu modifică imaginile pentru a avea colturi rotunjite. In schimb, ei folosesc HTML si CSS pentru a aplica această imagine peste fiecare imagine utilizator: http://www.facebook.com/images/ui/UIRoundedImage.png

Dacă inspectați UIRoundedImage.png, veți găsi că fiecare „pătrat“ constă dintr - un centru transparent, și colțuri opace , care sunt menite să se potrivească cu fundalul pe care imaginea utilizatorului se va odihni. De exemplu, în cazul în care imaginea de utilizator este pe un fundal alb, apoi alb colțuri rotunjite opace va fi suprapus pe imaginea utilizatorului.

Tehnica CSS pentru utilizarea doar o anumită parte a UIRoundedImage.pngse numește „sprite - uri CSS“. Puteți citi mai multe despre el aici: http://www.alistapart.com/articles/sprites/

Publicat 05/04/2009 la 05:32
sursa de către utilizator

voturi
0

Iată codul am scris pentru a rotunji colțuri cu ImageMagick folosind Perl. Acesta ar trebui să port pentru Ruby destul de ușor:

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

Publicat 08/02/2011 la 00:24
sursa de către utilizator

voturi
9

soluție universală

Această soluție funcționează cu imagini transparente și netransparente. Pentru a adăuga 15 pixeli raza colturi rotunjite la original_picture.pngcare este o imagine 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

Această soluție a fost dată de PM aici: https://stackoverflow.com/a/1916256/499917

soluție elegantă, nu funcționează cu imagini transparente

Această soluție funcționează fără nici un fel de imagine intermediară. Ce drăguț! Dar va perturba transparența fotografiei originale. Deci, utilizați numai atunci când sunteți sigur că imaginea ta nu este transparent.

Să presupunem că doriți colțuri rotunjite cu raza 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

Pentru comoditate, aici este ceea ce va face în mod obișnuit în Ruby sau alte limbi:

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}`

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

Publicat 24/09/2013 la 22:17
sursa de către utilizator

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