2016-08-22 6 views
0

с помощью пользовательской камеры, как мы можем показать предварительный просмотр полноразмерного изображения после щелчка изображения с камеры, нажатой и в режиме предварительного просмотра, если мы можем показать, следует ли принимать изображение или отбрасывать изображение перед сохранением его на SD-карте. (Подсказка: используемый в watsapp)Как показать предварительный просмотр изображения?

+0

Я предлагаю выполнить программно, Capture image-> создать временную директорию на SD-карте (например, whtsapp), сохранить ее. Убедитесь, что вы сжимаете его. Извлеките изображение с этого пути и покажите его. Вы можете использовать его для переполнения стека для каждого упомянутого мною шага. Вы также можете столкнуться с исключениями OOM, если растровые изображения не обрабатываются должным образом. – rmdroid

+0

Прошу вас показать мне какой-либо пример этого кода? – radhika

+0

Я направлю вас на решение. Перейдите по ссылке ниже. Камера api хорошо объясняется. http://www.androidhive.info/2013/09/android-working-with-camera-api/ – rmdroid

ответ

0

вы получите изображение в байт [], вы можете преобразовать этот байт [] в растровое изображение и показать его в ImageView

Bitmap bitmap = BitmapFactory.decodeByteArray(yourbytearray, 0, yourbytearray.length); 
0

Полный код согласно вашему требованию, приводится ниже , Просто следуйте этому примеру. Здесь uImage - битмап, а изображениеView - это изображение, в котором будет отображаться ваше изображение.

private void selectImage() { 

     final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(AddownRecipeFromHome.this); 
     builder.setTitle("Add Photo!"); 
     builder.setItems(options, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int item) { 
       if (options[item].equals("Take Photo")) 
       { 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg"); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
        startActivityForResult(intent, 1); 
       } 
       else if (options[item].equals("Choose from Gallery")) 
       { 
        Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        startActivityForResult(intent, 2); 

       } 
       else if (options[item].equals("Cancel")) { 
        dialog.dismiss(); 
       } 
      } 
     }); 
     builder.show(); 
    } 


    private Uri getTempUri() { 
     return Uri.fromFile(getTempFile()); 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == RESULT_OK) { 
      if (requestCode == 1) { 
       File f = new File(Environment.getExternalStorageDirectory().toString()); 
       for (File temp : f.listFiles()) { 
        if (temp.getName().equals("temp.jpg")) { 
         f = temp; 
         break; 
        } 
       } 
       try { 

        BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 

        uImage = BitmapFactory.decodeFile(f.getAbsolutePath(), 
          bitmapOptions); 

        imageView.setImageBitmap(uImage); 

        String path = android.os.Environment 
          .getExternalStorageDirectory() 
          + File.separator 
          + "Phoenix" + File.separator + "default"; 
        f.delete(); 
        OutputStream outFile = null; 
        File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg"); 
        try { 
         outFile = new FileOutputStream(file); 
         uImage.compress(Bitmap.CompressFormat.JPEG, 85, outFile); 
         outFile.flush(); 
         outFile.close(); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } else if (requestCode == 2) { 

       Uri selectedImage = data.getData(); 
       String[] filePath = { MediaStore.Images.Media.DATA }; 
       Cursor c = getContentResolver().query(selectedImage,filePath, null, null, null); 
       c.moveToFirst(); 
       int columnIndex = c.getColumnIndex(filePath[0]); 
       String picturePath = c.getString(columnIndex); 
       c.close(); 
       uImage = (BitmapFactory.decodeFile(picturePath)); 
       Log.e("path of imag", ""+picturePath); 
       imageView.setImageBitmap(uImage); 
      } 
     else if (requestCode == 3) { 
       try { 
        Log.e("testing", "return data is " + data.getData()); 

        String filePath = Environment.getExternalStorageDirectory() 
          + "/" + TEMP_PHOTO_FILE; 
        System.out.println("path " + filePath); 
        uImage = BitmapFactory.decodeFile(filePath); 
        ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
        uImage.compress(Bitmap.CompressFormat.PNG, 100, bao); 
        ba = bao.toByteArray(); 
        imageView.setImageBitmap(uImage); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
} 


    private File getTempFile() { 

     if (Environment.getExternalStorageState().equals(
       Environment.MEDIA_MOUNTED)) { 

      File file = new File(Environment.getExternalStorageDirectory(), 
        TEMP_PHOTO_FILE); 
      try { 
       file.createNewFile(); 
      } catch (IOException e) { 
      } 

      return file; 
     } else { 

      return null; 
     } 
    } 
Смежные вопросы