2009-03-05 10 views
5

के साथ बड़ी छवियां मुझे कैरो के साथ एक बहुत बड़ी छवि (> 50.000² पिक्सेल) प्रस्तुत करना है। स्मृति से बाहर किए बिना ऐसा करने के लिए मैं छवि के कुछ हिस्सों (< 1.000² पिक्सेल) प्रस्तुत करता हूं और बाद में उन्हें एक साथ मिला देता हूं।कैरो

  1. बनाएं 1000x1000 सतह
  2. अनुवाद वर्तमान भाग के पद पर
  3. ड्रा छवि (pycairo का उपयोग कर ड्राइंग निर्देश बुला)
  4. प्रस्तुत/सहेजें (cairo_surface_write_to_png) अगले के साथ
  5. दोहराएँ छवि फाइल करने के लिए भाग

क्योंकि कैरोस क्लिपिंग एल्गोरिदम मेरे से तेज़ हैं, चरण तीन पूरी छवि खींचता है, भले ही इसका केवल एक हिस्सा दिखाई देता है। अधिकांश सीपीयू का उपयोग चरण 3 (पायथन द्वारा) में किया जाता है। अधिकांश स्मृति का उपयोग चरण 4 (कैरो द्वारा) में किया जाता है।

क्या चीजों को गति देने का कोई तरीका है? कुछ इस तरह?

  1. बनाएं 1000x1000 सतह
  2. ड्रा छवि
  3. वर्तमान हिस्सा
  4. की स्थिति रेंडर/सहेजें छवि फाइल करने के लिए
  5. दोहराएँ 3 अगले भाग के साथ करने के लिए सब कुछ ले जाएँ

या

  1. 50000x50000 सतह बनाएं
  2. ड्रा छवि
  3. प्रस्तुत/सहेजें फाइल करने के लिए छवि का केवल वर्तमान हिस्सा
  4. अगले भाग

उत्तर

2

सबसे पहले, सी या वाला का उपयोग कर पायथन के बजाय साथ दोहराएँ 3 होगा शायद चीजों को गति दें।

स्मृति उपयोग के लिए, मैं एक फ़ाइल के बजाय अपनी स्ट्रीम पर लिखने की कोशिश करता हूं (write_to_png_stream देखें)। यह आपको स्मृति स्मृति उपयोग को नियंत्रित करने की अनुमति देता है (मान लीजिए कि कैरो आपके काम को केवल एक बार पूरा करने के बाद ही नहीं कहता है।

+0

एक और भाषा एक विकल्प नहीं है और समस्या को हल नहीं करेगा, लेकिन write_to_png_stream एक अच्छा विचार है। धन्यवाद – defnull

+0

आपका स्वागत है। मैं आशा करता हूँ यह काम करेगा। –

संबंधित मुद्दे