Στρογγυλοποίηση γωνίες των εικόνων με ImageMagick

ψήφοι
8

στο Rails μου app θέλω να έχω ένα παρόμοιο τμήμα προφίλ, όπως το Facebook, όπου οι εικόνες απεσταλμένα thumbnailed και γωνία στρογγυλεμένες αυτόματα. Είμαι χρησιμοποιώντας το convertβοηθητικό πρόγραμμα για να συρρικνωθεί εικόνες σε μικρογραφίες, αλλά είναι μια επιλογή για να στρογγυλεύουν τις γωνίες τους και εγώ εκεί; Ευχαριστώ.

Δημοσιεύθηκε 05/04/2009 στις 04:56
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
4

Εδώ είναι μερικά στρογγυλεμένες γωνίες παραδείγματα: http://www.imagemagick.org/Usage/thumbnails/#rounded_border . Θα πρέπει να δημιουργήσετε μια μάσκα κάποιου είδους (είτε με το χέρι ή χρησιμοποιώντας τα εργαλεία σχεδίασης) και στη συνέχεια επικάλυψε το πάνω εικόνα σας.

Απαντήθηκε 05/04/2009 στις 05:04
πηγή χρήστη

ψήφοι
7

Facebook δεν τροποποιεί τις εικόνες να έχουν στρογγυλεμένες γωνίες. Αντ 'αυτού, χρησιμοποιούν HTML και CSS για να εφαρμόσετε αυτήν την εικόνα πάνω σε κάθε εικόνα του χρήστη: http://www.facebook.com/images/ui/UIRoundedImage.png

Αν επιθεωρήσει UIRoundedImage.png, θα διαπιστώσετε ότι κάθε «πλατεία» αποτελείται από ένα διαφανές κέντρο, και αδιαφανή γωνιές που είναι γραφτό να ταιριάζει με το υπόβαθρο πάνω στο οποίο θα στηριχθεί η εικόνα του χρήστη. Για παράδειγμα, αν η εικόνα χρήστης είναι σε λευκό φόντο, στη συνέχεια, λευκό αδιαφανές στρογγυλεμένες γωνίες θα τοποθετηθεί πάνω στην εικόνα του χρήστη.

Η τεχνική CSS για τη χρήση μόνο ένα συγκεκριμένο τμήμα του UIRoundedImage.pngονομάζεται «sprites CSS». Μπορείτε να διαβάσετε περισσότερα για αυτό εδώ: http://www.alistapart.com/articles/sprites/

Απαντήθηκε 05/04/2009 στις 05:32
πηγή χρήστη

ψήφοι
0

Εδώ είναι ο κώδικας που έγραψα για να στρογγυλοποιεί τις γωνίες με το ImageMagick χρησιμοποιώντας Perl. Θα πρέπει θύρα για Ruby αρκετά εύκολα:

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

Απαντήθηκε 08/02/2011 στις 00:24
πηγή χρήστη

ψήφοι
9

καθολική λύση

Η λύση αυτή λειτουργεί με διαφανή και αδιαφανή εικόνες. Για να προσθέσετε 15 pixels ακτίνα στρογγυλεμένες γωνίες για original_picture.pngτο οποίο είναι 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

Η λύση δόθηκε από PM εδώ: https://stackoverflow.com/a/1916256/499917

Κομψή λύση, δεν λειτουργεί με διαφανείς εικόνες

Η λύση αυτή λειτουργεί χωρίς καμία ενδιάμεση εικόνα. Τι ωραία! Αλλά θα διακόψει τη διαφάνεια αρχική εικόνα σας. Έτσι, χρησιμοποιούν μόνο όταν είστε σίγουροι ότι η εικόνα σας δεν είναι διαφανής.

Ας υποθέσουμε ότι θέλετε στρογγυλεμένες γωνίες με ακτίνα 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

Για λόγους ευκολίας, εδώ είναι ό, τι θα κάνετε συνήθως σε Ruby ή κάποιες άλλες γλώσσες:

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

Πηγή: http://www.imagemagick.org/Usage/thumbnails/#rounded

Απαντήθηκε 24/09/2013 στις 22:17
πηγή χρήστη

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