我需要将Image带到ImageView

时间:2016-06-05 09:15:28

标签: android camera imageview

我从自定义相机拍了一张照片,但我无法显示新活动中拍摄的照片。 这是我的代码,它不起作用。 有什么问题?

    public class PicturePreview extends AppCompatActivity {

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

    Bundle bundle = getIntent().getExtras();
    String path = bundle.getString("ImagePath");

    ImageView image = (ImageView) findViewById(R.id.photopreview);
    File imgFile = new  File(path);

    if(imgFile.exists()){
        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
        image.setImageBitmap(myBitmap);

    }


}

}

这是xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="involved.dreamon.PicturePreview">



<ImageView
    android:id="@+id/photopreview"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:layout_centerInParent="true"/>




</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

你有什么例外之王......不清楚。如果没有问题但没有显示图像。然后图像需要压缩以在ImageView中设置它。

有时候图像调节很高时,它不显示

使用此方法解决此问题

public Bitmap imageConversion(Bitmap imageBitmap) {
    Bitmap bitmap = imageBitmap;
    float lengthbmp = bitmap.getHeight();
    float widthbmp = bitmap.getWidth();
    if (lengthbmp > 1000) {
        if (widthbmp > 800) {
            bitmap = Bitmap.createScaledBitmap(bitmap, 600, 800, true);
        } else {
            bitmap = Bitmap.createScaledBitmap(bitmap, (int) widthbmp, 800,
                    true);
        }
    }
    return bitmap;
}

使用像这样的方法

if(imgFile.exists()){
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    image.setImageBitmap(imageConversion(myBitmap));

}