2011-05-16 13 views
6

मान लें कि मेरे पास यह टूल है जो हर 10 सेकंड में उपयोगकर्ता के डेस्कटॉप का स्क्रीनशॉट लेता है और छवियों को सर्वर पर अपलोड करता है। 24 घंटों के बाद सर्वर से छवियां हटा दी जाती हैं। मैं उपयोगकर्ता को अपने ब्राउज़र में इन स्क्रीनशॉट को देखने की अनुमति देना चाहता हूं। तो मान लें कि प्रत्येक छवि 300K है और उनमें से 5000 24 घंटे की अवधि में अपलोड की गई हैं - यह 1.5 जीबी डेटा है। ये पीएनजी छवियां हैं, और अक्सर एक स्क्रीनशॉट पिछले एक से अलग नहीं है, इसलिए मुझे लगता है कि मैं उन्हें बहुत अच्छी तरह से संपीड़ित कर सकता हूं - लेकिन मुझे यकीन नहीं है कि यह कैसे काम करेगा। मैं उपयोगकर्ता को इन छवियों को अपने ब्राउज़र में देखने की अनुमति देना चाहता हूं। मैं छवियों के नीचे एक स्लाइडर चाहता हूं ताकि उपयोगकर्ता 24 घंटे की अवधि में किसी भी बिंदु पर कूद सके। मुझे लगता है कि यूट्यूब प्लेयर की तरह कुछ आदर्श होगा। जहां उपयोगकर्ता चारों ओर कूद सकता है और डेटा स्ट्रीम किया जाता है, आदि। छवि गुणवत्ता महत्वपूर्ण है क्योंकि उपयोगकर्ता को स्क्रीनशॉट में टेक्स्ट पढ़ने में सक्षम होना चाहिए। मैं एक पायथन समाधान पसंद करेंगे।सर्वर से स्क्रीनशॉट स्ट्रीम करें

मैंने पहले कभी ऐसा कुछ नहीं किया है, और मुझे यकीन नहीं है कि समस्या से कैसे संपर्क करें। तुम क्या करोगे?

उत्तर

5

त्वरित & आसान उपाय करने के लिए

  1. टाइल ऊपर एक निश्चित ग्रिड साथ स्क्रीन
  2. दुकान टाइल्स अलग से, एक strong hash (यहां तक ​​कि उन के बीच, डुप्लिकेट को खत्म करने)
  3. दुकान द्वारा अनुक्रमित है टाइल हैश के 2-डी सरणी के रूप में पूरी स्क्रीन
  4. हैश टाईल्स से ब्राउज़र में मूल स्क्रीन का पुनर्निर्माण करें।

एक स्क्रीन से दूसरी स्क्रीन पर जाकर, बहुत समान, केवल कुछ टाइल्स लोड करने की बात होगी, इसलिए आपका संपीड़न है।

टाइल्स को फिर से निकालने के लिए एक सरल संदर्भ गणना योजना लागू करें। स्टोरेज को कम करने के लिए आप उपयोगकर्ताओं के बीच स्क्रीन पार्ट्स साझा करना भी चाह सकते हैं।

विभिन्न टाइल आकारों के साथ प्रयोग यह पता लगाने के लिए कि कौन सा सबसे अच्छा काम करता है; यह स्क्रीन रिज़ॉल्यूशन, उपयोगकर्ता गतिविधि और तत्वों को संग्रहीत करने के लिए उपयोग किए जाने वाले ग्राफिक्स प्रारूप पर निर्भर हो सकता है।

पायथन में छवि प्रसंस्करण PIL के साथ किया जा सकता है।

+0

कुछ मुझे बताता है कि लागू करने के लिए "त्वरित और आसान" नहीं होने वाला है :) लेकिन यह निश्चित रूप से अच्छा है। +1 स्वीकार करेगा अगर किसी और के पास कोई बेहतर सुझाव नहीं है। –

+0

@ जेसे: ठीक है, यह त्वरित 'एन' वर्णन करने में आसान है और इसके लिए वीडियो कोडेक्स का कोई ज्ञान नहीं है। लेकिन मैं मानता हूं कि कई कोने के मामलों पर विचार करने के लिए :) –

1

तो उपयोगकर्ता छवि कश्मीर में वर्तमान में है और छवि एच लोड करने के लिए, स्क्रीनशॉट संभालने ज्यादातर एक ही होगा चाहते हैं, तो आप सिर्फ एच और लालकृष्ण

के बीच delta diff भेज सकें, आपको diffs से आगे की गणना कर सकते समय और उन्हें तेजी से पहुंच के लिए कैश या डेटाबेस में स्टोर करें (लेकिन बहुत सारे डेटा होंगे) या आप इसे फ्लाई पर गणना कर सकते हैं।

+1

हे, हाँ, मुझे इतना मिल गया। यह 1.5 जीबी स्ट्रीमिंग कर रहा है जो मुश्किल हिस्सा है। –

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