मैंने ड्राइंग से जुड़े किसी भी चीज़ के लिए कैरो का उपयोग किया है। मैं एक चिकित्सा सॉफ्टवेयर कंपनी में काम करता हूं, इसलिए मैं वैज्ञानिक डेटा विज़ुअलाइज़ेशन और अन्य चीजों का प्रोटोटाइप करता हूं।
मैं अपने चित्र प्रदर्शित करने के लिए आमतौर पर तीन तरीके हैं:
- एक जीटीके ड्राइंग क्षेत्र Python स्क्रिप्ट और जीटीके के साथ बनाया;
- पायथन छवि लाइब्रेरी
show()
विधि का उपयोग कर सीधे एक स्क्रीन पर प्रदर्शित एक पीएनजी छवि;
- एक पीएनजी छवि डिस्क पर सहेजी गई, पाइथन छवि लाइब्रेरी के माध्यम से भी।
एक साधारण cairographics उदाहरण है, जो वास्तव मैं किसी भी नई परियोजना के लिए एक टेम्पलेट के रूप में उपयोग, से ली गई स्क्रिप्ट है:
import gtk
class Canvas(gtk.DrawingArea):
def __init__(self):
super(Canvas, self).__init__()
self.connect("expose_event", self.expose)
self.set_size_request(800,500)
def expose(self, widget, event):
cr = widget.window.cairo_create()
rect = self.get_allocation()
# you can use w and h to calculate relative positions which
# also change dynamically if window gets resized
w = rect.width
h = rect.height
# here is the part where you actually draw
cr.move_to(0,0)
cr.line_to(w/2, h/2)
cr.stroke()
window = gtk.Window()
canvas = Canvas()
window.add(canvas)
window.set_position(gtk.WIN_POS_CENTER)
window.show_all()
gtk.main()
या यदि आप जीयूआई उपकरणकिटें के साथ सौदा नहीं करना चाहते, तो आप बना सकते हैं और कर सकते हैं स्क्रीन पर एक छवि प्रदर्शित करें, और वैकल्पिक रूप से इसे फ़ाइल में सहेजें:
import cairo, Image
width = 800
height = 600
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
cr = cairo.Context(surface)
# optional conversion from screen to cartesian coordinates:
cr.translate(0, height)
cr.scale(1, -1)
# something very similar to Japanese flag:
cr.set_source_rgb(1,1,1)
cr.rectangle(0, 0, width, height)
cr.fill()
cr.arc(width/2, height/2, 150, 0, 6.28)
cr.set_source_rgb(1,0,0)
cr.fill()
im = Image.frombuffer("RGBA",
(width, height),
surface.get_data(),
"raw",
"BGRA",
0,1) # don't ask me what these are!
im.show()
# im.save('filename', 'png')
इसके लिए धन्यवाद। मैं बस काम करने के लिए हुप्स के एक टन से कूद गया (ओएस एक्स पर पीआईएल के लिए पूरी तरह से टूटी हुई इंस्टॉलेशन प्रक्रिया सहित)। मुझे डर है कि यह नौसिखिया उपयोगकर्ताओं के लिए पूरी तरह से अनुपयुक्त है। (यह भी नहीं होना चाहिए: पीआईएल आयात छवि से?) – Alper
इस तरह की चीज ने मुझे ब्राउज़र-आधारित समाधान (एचटीएमएल कैनवास या जावास्क्रिप्ट-आधारित एसवीजी) में बदल दिया, और त्वरित '' चित्रों के लिए भी प्रोसेसिंग किया। लेकिन तथ्य यह है कि अब तक काइरो किसी अन्य समाधान की तुलना में कहीं अधिक शक्तिशाली है: डी। – heltonbiker
इसके अलावा: पाइथन खूनी जावास्क्रिप्ट की तुलना में इस सामान को करने का एक और अधिक सभ्य तरीका है। – Alper