2010-01-11 28 views
5

मैं एंड्रॉइड के लिए एक एप्लीकेशन लिख रहा हूं। मुझे कैमरे से ली गई तस्वीर पर कुछ छवि प्रसंस्करण करने की आवश्यकता है। मैं फोटो प्राप्त करने के लिए कैमरा का उपयोग करता हूं। चित्रक कॉलबैक, और मुझे बाइट सरणी में चित्र मिलता है। समस्या यह है कि मैं फोटो के प्रत्येक पिक्सेल (कुछ फ़िल्टरिंग और अन्य सामान) पर संचालन करना चाहता हूं, इसलिए मुझे लगता है कि बाइट सरणी में फोटो खराब विचार नहीं है। लेकिन मुझे नहीं पता कि इस बाइट सरणी में जानकारी की व्याख्या कैसे करें ... प्रसंस्करण को बनाने का एकमात्र तरीका BitmapFactory.decodeByteArray() का उपयोग करता है और फिर बिटमैप ऑब्जेक्ट का उपयोग करता है। क्या यह बहुत सारी छवि प्रसंस्करण को संभालने का एक अच्छा तरीका है? अभी मैं कुछ का उपयोग इस तरह दिखेगा:एंड्रॉइड पर छवि प्रसंस्करण

बिटमैप mPhotoPicture mPhotoPicture = BitmapFactory.decodeByteArray (imageData, 0, imageData.length);

mPhoto चित्र = mPhotoPicture.copy (Bitmap.Config.RGB_565, सत्य);

मैं किसी भी मदद की सराहना करता हूं।

उत्तर

7

मुझे यकीन नहीं है कि एक बाइट सरणी में डीकोडिंग एंड्रॉइड पर ऐसा करने का सबसे अच्छा तरीका है, लेकिन मैं सामान्य रूप से छवि प्रसंस्करण के बारे में जो कुछ जानता हूं उसे पेश कर सकता हूं।

यदि आप RGB_565 का उपयोग कर रहे हैं, तो इसका मतलब है कि प्रत्येक पिक्सेल 16 बिट्स या दो बाइट्स है। पहले 5 बिट लाल हैं, अगले 6 हरे हैं, और अंतिम 5 नीले हैं। जावा से बालों वाली उसके साथ काम करना। मेरा सुझाव है कि आप ARGB_8888 जैसे एक आसान प्रारूप के साथ काम करें, जिसका मतलब है कि आपके पास 32 बिट्स या चार बाइट प्रति पिक्सेल है, और प्रत्येक बाइट अपना स्वयं का मान (अल्फा, लाल, हरा, नीला) है।

परीक्षण करने के लिए, 0 पर, हर चौथे बाइट की स्थापना, [3], [7], [11], आदि जैसे कि बाहर एक विशेष चैनल के सभी, सभी नीले लेना चाहिए इस मामले में, प्रयास करें।

[2], [6], [10], आदि प्रत्येक पिक्सेल के लिए सभी हरे रंग के मान होंगे।

(ध्यान दें, चार घटकों विपरीत क्रम में जा सकते हैं, क्योंकि मैं endianness बारे में निश्चित नहीं हूँ! तो मैं सिर्फ तुमसे कहा था हो सकता है कि कैसे बाहर अल्फा, नहीं नीले लेने के लिए ...)

+0

इस के लिए धन्यवाद उपयोगी जानकारी। अब मैं दस्तावेजों से जानता हूं कि मैं केवल इन प्रारूपों में चित्र फोटो ले सकता हूं: PixelFormat.YCbCr_420_SP (NV21), PixelFormat.RGB_565, या PixelFormat.JPEG तो मुझे लगता है, मैं RGB_565 एन्कोडिंग लिखने का प्रयास करता हूं। – Kubeczek

+0

दाएं। या तो उस प्रारूप में संपादित करें, या संपादित करने से पहले कनवर्ट करने का एक तरीका खोजें। –

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