मेरे पास एक कोड है जो एक काहिरा ImageSurface
उत्पन्न करता है, और मैं इसे इस तरह का खुलासा करता हूं:CherryPy के साथ एक HTTP प्रतिक्रिया में एक छवि कैसे वापस करें
def preview(...):
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
...
cherrypy.response.headers['Content-Type'] = "image/png"
return surface.get_data()
preview.exposed = True
यह काम नहीं करता है (ब्राउज़र रिपोर्ट करता है कि छवि में त्रुटियां हैं)।
मैंने परीक्षण किया है कि surface.write_to_png('test.png')
काम करता है, लेकिन मुझे यकीन नहीं है कि डेटा को वापस करने के लिए डेटा को डंप करना है। मैं कुछ फाइल जैसी वस्तु का अनुमान लगा रहा हूं? Xzx21 के अनुसार, get_data()
एक बफर देता है। मैंने अब भी कोशिश की है:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
साथ ही, क्या यह छवि स्मृति में बनाने और पकड़ने के लिए बेहतर है (जैसे मैं करने की कोशिश कर रहा हूं) या इसे डिस्क पर एक temp फ़ाइल के रूप में लिखना और वहां से इसकी सेवा करना ? मुझे केवल एक बार छवि की आवश्यकता है, फिर इसे त्याग दिया जा सकता है।
'write_to_png_stream' के बारे में कैसे? http://cairographics.org/documentation/cairomm/reference/classCairo_1_1Surface.html#b3eca5bc13abe27f470fdf08134269bb –
pycairo उस विधि का पर्दाफाश प्रतीत नहीं होता है ... http://cairographics.org/documentation/pycairo/2/reference/surfaces। एचटीएमएल # वर्ग-इमेजर्सफेस-सतह – colinmarc