मेरी रेल अनुप्रयोग में मैं फेसबुक जहां अपलोड की गई छवियों को स्वचालित रूप से लघु छवि बनाई और कोने-गोल कर रहे हैं जैसे एक समान प्रोफ़ाइल अनुभाग करना चाहते हैं। मैं उपयोग कर रहा हूँ convertउपयोगिता थंबनेल में छवियों को घटाने के लिए, लेकिन वहाँ भी उनके कोनों दौर के लिए एक विकल्प है? धन्यवाद।
ImageMagick के साथ चित्रों के कोनों गोलाई
यहाँ कुछ गोलाकार कोनों उदाहरण हैं: http://www.imagemagick.org/Usage/thumbnails/#rounded_border । आप (या तो हाथ से या ड्राइंग उपकरण का उपयोग कर) किसी प्रकार की एक मुखौटा बनाने और उसके बाद अपनी छवि पर इसे ओवरले करने के लिए की आवश्यकता होगी।
फेसबुक गोलाकार कोनों के लिए चित्रों को संशोधित नहीं करता है। इसके बजाय, वे प्रत्येक उपयोगकर्ता चित्र पर इस छवि को लागू करने के लिए HTML और सीएसएस का उपयोग करें: http://www.facebook.com/images/ui/UIRoundedImage.png
आप का निरीक्षण किया तो UIRoundedImage.png, आप पाएंगे कि प्रत्येक "वर्ग" एक पारदर्शी केंद्र के होते हैं, और अपारदर्शी कोनों कि पृष्ठभूमि जिस पर उपयोगकर्ता चित्र आराम होगा मैच के लिए होती हैं। उदाहरण के लिए, यदि उपयोगकर्ता चित्र एक सफेद पृष्ठभूमि पर है, तो सफेद अपारदर्शी गोलाकार कोनों उपयोगकर्ता चित्र पर डाला जाएगा।
का सिर्फ एक विशिष्ट भाग का उपयोग कर के लिए सीएसएस तकनीक UIRoundedImage.pngकहा जाता है "CSS स्प्राइट"। आप यहाँ इसके बारे में अधिक पढ़ सकते हैं: http://www.alistapart.com/articles/sprites/
यहाँ कोड मैं ImageMagick पर्ल का उपयोग कर के साथ कोनों दौर को पत्र लिखा है। यह काफी आसानी से रूबी के लिए बंदरगाह चाहिए:
http://article.gmane.org/gmane.comp.video.graphicsmagick.apis/322
यूनिवर्सल समाधान
यह समाधान पारदर्शी और अपारदर्शी चित्रों के साथ काम करता है। को जोड़ने के लिए 15 पिक्सल गोलाकार कोनों त्रिज्या के लिए 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
यह समाधान द्वारा दिया गया था अपराह्न यहाँ: 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
सुविधा के लिए, यहाँ क्या आप आम तौर पर रूबी या कुछ अन्य भाषाओं में करना होगा है:
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}`













