2012-06-27 23 views
5

के साथ छवि के बाहर सर्कल सर्कल करें मैं rmagick का उपयोग कर एक छवि से बाहर एक सर्कल काटना चाहता हूँ।RMagick

यहाँ मैं क्या हासिल करने में सक्षम होना चाहते हैं का एक उदाहरण है:

http://img375.imageshack.us/img375/1153/walterf.jpg http://img375.imageshack.us/img375/1153/walterf.jpg ->http://img15.imageshack.us/img15/8129/circlethumb.png

ऐसा लगता है मैं http://studio.imagemagick.org/RMagick/doc/draw.html#circle उपयोग करने के लिए एक चक्र में कटौती करना चाहते हैं की तरह है, और फिर से नकाब clip_path यह, लेकिन दस्तावेज़ बहुत स्पष्ट नहीं हैं। क्या कोई मुझे सही दिशा में इंगित करने में सक्षम होगा?

उत्तर

12
require 'rmagick' 

im = Magick::Image.read('walter.jpg').first 

circle = Magick::Image.new 200, 200 
gc = Magick::Draw.new 
gc.fill 'black' 
gc.circle 100, 100, 100, 1 
gc.draw circle 

mask = circle.blur_image(0,1).negate 

mask.matte = false 
im.matte = true 
im.composite!(mask, Magick::CenterGravity, Magick::CopyOpacityCompositeOp) 

im.write 'walter_circle.png' 
+0

आप इसे दो छवियों के साथ कैसे करेंगे? एक सर्कल के बजाय, एक पारदर्शी छवि –

+0

के साथ यह समाधान अल्फा चैनल के साथ एक पीएनजी छवि के लिए काम नहीं करता है – Dmitry

1

यह कैसे मैं ImageMagick और php के साथ यह करना होगा:

// Canvas the same size as the final image 
exec("convert -size 800x533 xc:white white.jpg"); 
// The mask 
exec("convert -size 800x533 xc:none -draw \"fill black circle 400,265 400,50\" write_mask.png"); 
// Cut the whole out of the canvas 
exec("composite -compose Dst_Out write_mask.png white.jpg -matte step.png"); 
// Put the canvas over the image and trim off excess white background 
exec("convert IMG_5745.jpg step.png -composite -trim final.jpg"); 

आप प्रक्रिया का पालन करने में सक्षम होना चाहिए?

बाद में सफाई टेम्पवरी छवियां - मैं tempory छवियों को .miff प्रारूप में सहेजता हूं और फिर बाद में सभी .miff छवियों को हटाने के लिए एक लूप लिखता हूं। वैकल्पिक रूप से बस उन्हें छोड़ दें और यदि आप tempory छवियों के लिए एक ही नाम का उपयोग करते हैं तो कोड को चलाने पर हर बार ओवरराइट किया जाएगा।

+0

क्या आप कृपया एक Rmagic संदर्भ दे सकते हैं? – Almaron