2017-01-25 108 views
-1

我正在一个演示应用程序中拍摄照片然后保存。 我想在图像视图中显示图片。我不明白为什么它不起作用。我最近尝试了一些解决方案,但其中没有一个为我工作。 有没有人能告诉我我的代码有什么问题。不明白为什么我没有得到我的形象?

//这是我的代码

private Button takePictureButton; 
     private ImageView imageView; 
     private Uri file; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      takePictureButton = (Button) findViewById(R.id.button_image); 
      imageView = (ImageView) findViewById(R.id.imageview); 

      if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
       takePictureButton.setEnabled(false); 
       ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE }, 0); 

      } 
     } 

     @Override 
     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
      if (requestCode == 0) { 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED 
         && grantResults[1] == PackageManager.PERMISSION_GRANTED&&grantResults[2]==PackageManager.PERMISSION_GRANTED) { 
        takePictureButton.setEnabled(true); 
       } 
      } 
     } 

     public void takePicture(View view) { 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      file = Uri.fromFile(getOutputMediaFile()); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, file); 

      startActivityForResult(intent, 100); 
     } 

     private static File getOutputMediaFile(){ 
      File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), "CameraDemo"); 

      if (!mediaStorageDir.exists()){ 
       if (!mediaStorageDir.mkdirs()){ 
        Log.d("CameraDemo", "failed to create directory"); 
        return null; 
       } 
      } 

      String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
      return new File(mediaStorageDir.getPath() + File.separator + 
         "IMG_"+ timeStamp + ".jpg"); 
     } 

      @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       if (requestCode == 100) { 
//Code that bind image with ImageView 

        if (resultCode == RESULT_OK) { 
         imageView.setMaxHeight(100); 
         imageView.setMaxWidth(100); 
         imageView.setImageURI(null); 
         imageView.setImageURI(file); 
        } 
       } 

//在此先感谢

+0

问题是什么,你都面临崩溃? – Amsheer

+0

这个问题有什么问题?为什么downvote? – Champandorid

+0

我没有获取图像,我想要显示该图像。 – Champandorid

回答

0

我真的不明白,你在这里做什么。但是:

if (resultCode == RESULT_OK && data != null && data.getData() != null) { 
         Uri uri = data.getData(); 
         imageView.setMaxHeight(100); 
         imageView.setMaxWidth(100); 
         imageView.setImageURI(uri); 
    } 

将此代码替换为您的activityResult,它正在为我工​​作。

+0

不工作 – Champandorid

+0

是否调用activityResult?你的统计是否被调用?你确定imageview是可见的吗?你有没有试过任何占位符? –

0

尝试这种方式,将工作

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == Activity.RESULT_OK) { 
    if (requestCode == SELECT_FILE) 
     onSelectFromGalleryResult(data); 
    else if (requestCode == REQUEST_CAMERA) 
     onCaptureImageResult(data); 
    } 
} 
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(); 
    } 

    ivImage.setImageBitmap(thumbnail); 
} 

欲了解更多请参阅本http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample

0

在我的情况下,它的工作对我来说:

private static Bitmap Image = null; 
private static Bitmap rotateImage = null; 



@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Log.e("resultCode", Integer.toString(resultCode)); 
     Log.e("requestCode", Integer.toString(requestCode)); 
      Log.e("Inside If","Success"); 
      Uri mImageUri = data.getData(); 
      try { 
       Image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mImageUri); 
       if (getOrientation(getApplicationContext(), mImageUri) != 0) { 
        Matrix matrix = new Matrix(); 
        matrix.postRotate(getOrientation(getApplicationContext(), mImageUri)); 
        if (rotateImage != null) 
         rotateImage.recycle(); 
        rotateImage = Bitmap.createBitmap(Image, 0, 0, Image.getWidth(), Image.getHeight(), matrix,true); 
        imageView.setImageBitmap(rotateImage); 
        //saveImagetoFolder(rotateImage); 
       } else { 
        imageView.setImageBitmap(Image); 
        // saveImagetoFolder(Image); 

       } 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

    } 
相关问题