2016-02-08 6 views
5

मैं एंड्रॉइड में नया हूं और एक छोटा ऐप बना रहा हूं जो कैमरे से तस्वीर लेता है और इसे गैलरी में सहेजता है।नई गतिविधि में कैप्चर की गई छवि दिखाएं

यहां वह फ़ंक्शन है जो छवि को कैप्चर करता है।

private void onCaptureImageResult(Intent data) { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 

     File destination = new File(Environment.getExternalStorageDirectory(), 
       System.currentTimeMillis() + ".jpg"); 

     FileOutputStream fo; 
     try { 
      destination.createNewFile(); 
      fo = new FileOutputStream(destination); 
      fo.write(bytes.toByteArray()); 
      fo.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

यह वह जगह है activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:padding="5dp" > 

     <Button 
      android:id="@+id/btnSelectPhoto" 
      android:background="#149F82" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Select Photo" /> 
    </LinearLayout> 



</LinearLayout> 

क्या मैं एक ही गतिविधि है जो करने के लिए बटन है पर नहीं है कि जब छवि कब्जा कर लिया है मैं एक और गतिविधि (पेज) पर चित्र प्रदर्शित करना चाहते हैं क्या करना चाहते हैं छवि कैप्चर करें। ऐसा कैसे करें।

अग्रिम धन्यवाद

+0

आपको कैप्चर की गई छवि http://stackoverflow.com/questions/20327213/getting-path-of-captured-image-in-android-using-camera-intent के पथ प्राप्त करने के बजाय छवि को डिवाइस पर सहेजने की आवश्यकता है और इसे पास करें आवश्यक गतिविधि –

+1

आप पहले से ही बाहरी स्टोरेज में फ़ाइल सहेज रहे हैं 'फ़ाइल गंतव्य = नई फ़ाइल (पर्यावरण .getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg");' बस गतिविधि स्विच करें और वहां फ़ाइल पढ़ें। –

+1

onactivityResult में संरक्षित शून्य onActivityResult (पूर्णांक requestCode, पूर्णांक resultCode, आशय डेटा) पिकर इरादे से लौटे डेटा प्राप्त करें { अगर (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { बिटमैप तस्वीर = (बिटमैप) data.getExtras()।डेटा प्राप्त करें"); उरी tempUri = getImageUri (getAplicationContext(), फोटो); } फिर उस डेटा को बंडल का उपयोग करके नई गतिविधि में पास करें और फिर उस बंडल से छवि प्रदर्शित करें। – androidnoobdev

उत्तर

0

में मुझे लगता है आप जानते हैं कि इरादे से छवि जानकारी पर कब्जा कर लिया करने के लिए कैसे।

यदि आपको पता नहीं है तो। इसे गूगल करें और इसके लिए आपको बहुत सारे समाधान मिलेंगे।

check this one

आप को दिखाने के लिए अगले activty पर छवि कब्जा दो तरीके अपनाने कर सकते हैं।

1 => नई गतिविधि शुरू करें जिसमें आप छवि प्रदर्शित करना चाहते हैं। और कैमरा को क्रिएट विधि में खोलें और कैमरे से एक्टिविटी रिसेट में परिणाम प्राप्त करें और छवि दिखाएं।

2 => कैमरे को खोलें और निष्क्रियता डेटा पर इंटेंट डेटा प्राप्त करें और इस जानकारी को अपनी अगली गतिविधि में पास करें और छवि को क्रिएट विधि में दिखाएं।

0

नीचे एक समाधान है। आप कब्जे वाले बिटमैप को एक इरादे में पारित कर सकते हैं और फिर अपनी नई गतिविधि शुरू कर सकते हैं। नीचे इस तरह की तरह। एक बार जब आप छवि को कैप्चर करते हैं तो आप इस तर्क को अपने onCaptureImageResult() के अंदर कार्यान्वित कर सकते हैं।

Intent intent = new Intent(this, NewActivity.class); 
    intent.putExtra("MyImage", bitmap); 
    startActivity(intent); 

आप नीचे दिए गए चरण के बाद इरादे से बिटमैप प्राप्त कर सकते हैं। और छवि को एक छवि दृश्य में सेट करें या इसके साथ कुछ और करें।

ImageView imgView = (ImageView) img.findViewById(R.id.myIMageView); /* Called inside OnCreate() using the parent View */ 
    Intent intent = getIntent(); 
    Bitmap bitmap = (Bitmap) intent.getParcelableExtra("MyImage"); 

मुझे आशा है कि यह आपकी मदद करेगी। का आनंद लें।

+1

यदि छवि बड़ी है तो यह अपवाद फेंक सकता है। – androidnoobdev

1

इसका सरल, फोटो कैप्चर करने के बाद, आपकी तस्वीर सहेजी जा रही है। अब, गतिविधि परिणाम विधि पर, आपको बस अपनी दूसरी गतिविधि पर जाने के इरादे का उपयोग करना होगा।

अपनी दूसरी गतिविधि में बस अपनी सहेजी गई छवि का पथ प्राप्त करें और इसे अपने छवि दृश्य में सेट करें।

3

आपको बस अपनी विधि से नई गतिविधि के लिए मार्ग पारित करना होगा।

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("MyImagePath", destination.getAbsoluteFile()); 
startActivity(intent); 

और नई गतिविधि में

File imgFile = new File(filePath); 

if(imgFile.exists()){ 

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 

    myImage.setImageBitmap(myBitmap); 

} 
1

MainActivity

String filePath; 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     ... 
     } 

    private void onCaptureImageResult(Intent data) { 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 

     String fileName = System.currentTimeMillis() + ".jpg" 

     filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + fileName; 

     File destination = new File(filePath); 

     ... 
     } 

     yourButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), AnotherActivity.class); 
       intent.putExtra("filePath", filePath) 
       startActivity(intent); 

       } 
      }); 

AnotherActivity

String filePath; 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

    Intent intent = this.getIntent(); 

    filePath = intent.getStringExtra("filePath"); 

    File imgFile = new File(filePath); 

    if(imgFile.exists()){ 

     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

     ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 

     myImage.setImageBitmap(myBitmap); 

     } 
    } 
+0

जब मैंने कोड की इस पंक्ति को लिखा तो यह त्रुटि देता है। filePath = Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg"; (अतुलनीय प्रकार) –

+0

त्रुटि आवश्यक है: java.lang.string मिला: java.io.File –

+0

+ "jpg" को हटाएं और फिर से जांचें –

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