2009-06-23 11 views
6

मैं एक पूर्वावलोकन फ्रेम को एक जेपीईजी छवि के रूप में सहेजना चाहता हूं।एंड्रॉइड: पूर्वावलोकन फ्रेम को जेपीईजी छवि के रूप में कैसे सहेजना है?

मैं निम्नलिखित कोड लिखने की कोशिश की है:

public void onPreviewFrame(byte[] _data, Camera _camera) 
{ 
    if(settings.isRecording()) 
    { 
     Camera.Parameters params = _camera.getParameters(); 
     params.setPictureFormat(PixelFormat.JPEG); 
     _camera.setParameters(params); 
     String path = "ImageDir" + frameCount; 
     fileRW.setPath(path); 
     fileRW.WriteToFile(_data); 
     frameCount++; 
    } 
} 

लेकिन यह एक jpeg छवि के रूप में एक सहेजी गई फ़ाइल को खोलने के लिए संभव नहीं है। क्या किसी को पता है कि पूर्वावलोकन फ्रेम को जेपीईजी छवियों के रूप में कैसे सहेजना है?

धन्यवाद

उत्तर

-1

_डेटा शायद जेपीईजी प्रारूप में नहीं है। क्या आपने प्रारंभ पूर्वावलोकन कॉल करने से पहले Camera.Parameters.setPreviewFormat(PixelFormat.JPEG) पर कॉल किया था?

+0

यह समस्या का समाधान नहीं करता –

+0

कैमरे के मानकों का क्या प्रारूप है कि छवि में है? – hacken

+0

पूर्वावलोकन डेटा के लिए सभी एंड्रॉइड कैमरे dosent समर्थन jpeg प्रारूप – MoHaKa

0

मैंने पूर्वावलोकन से पहले पूर्वावलोकनफॉर्मैट को कैमरे के साथ सेट किया है। पैरामीटर.सेट प्रीव्यूफॉर्मैट (पिक्सेलफॉर्मैट.जेपीईजी) पूर्वावलोकन से पहले, लेकिन ऐसा लगता है कि यह वास्तव में पूर्वावलोकन प्रारूप सेट नहीं कर सकता ...... वैसे, डिफ़ॉल्ट प्रारूप पूर्वावलोकन YCbCr_420_SP है ....

1

आपको इसे मैन्युअल रूप से रूपांतरित करना होगा, अगर आप संग्रह ब्राउज़ करते हैं तो एंड्रॉइड डेवलपर्स सूची पर कुछ उदाहरण हैं - ज्यादातर प्रारूप (ल्यूमिनेंस/क्रोमिनेंस, आदि) रूपांतरण से निपटने, फिर लेखन छवि को बिटमैप पर, फिर फ़ाइल में सहेजना।

यह वास्तव में दर्द का एक सा है।

0

आपको पहले यह जांचना होगा कि पर कॉल करके समर्थित डिवाइस प्रारूपों के लिए समर्थित पूर्वावलोकन प्रारूप क्या हैं। समर्थित पूर्वावलोकन पूर्वावलोकन देखें()। सुनिश्चित करें कि पर सेट करने से पहले जेपीईजी समर्थित है setPreviewFormat (PixelFormat.JPEG)

4

इस कोड को चेकआउट करें। मुझे उम्मीद है कि यह

camera.setPreviewCallback(new PreviewCallback() { 
        @Override 
        public void onPreviewFrame(byte[] data, Camera camera) { 
         // TODO Auto-generated method stub 
         Camera.Parameters parameters = camera.getParameters(); 
         Size size = parameters.getPreviewSize(); 
         YuvImage image = new YuvImage(data, ImageFormat.NV21, 
           size.width, size.height, null); 
         Rect rectangle = new Rect(); 
         rectangle.bottom = size.height; 
         rectangle.top = 0; 
         rectangle.left = 0; 
         rectangle.right = size.width; 
         ByteArrayOutputStream out2 = new ByteArrayOutputStream(); 
         image.compressToJpeg(rectangle, 100, out2); 
         DataInputStream in = new DataInputStream(); 
         in.write(out2.toByteArray()); 

         } 
        } 

       }); 
       camera.startPreview(); 
0

जेपीईजी कैमरा पूर्वावलोकन के लिए प्रारूप नहीं है। official documentation कहते हैं,

"केवल ImageFormat.NV21 और ImageFormat.YUY2 के लिए समर्थन कर रहे हैं"

क्रम कैमरा पूर्वावलोकन से एक तस्वीर पाने के लिए, आप पूर्वावलोकन प्रारूप परिभाषित करने के लिए, नीचे के रूप में की जरूरत है:

Camera.Parameters parameters; 
parameters.setPreviewFormat(ImageFormat.NV21); //or ImageFormat.YU2 

उसके बाद, आप Dany के उदाहरण के रूप में & जेपीईजी बचाने सेक।

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