位图无法在imageView中设置图像

时间:2019-09-01 20:39:22

标签: android bitmap imageview android-camera-intent

我是Android应用程序开发的新手,“ BitMap”和“ ImageView”有问题

和往常一样,我搜索堆栈溢出和其他各种资源,但是无论我做什么,我都无法实现我应有的功能,主要问题是BitMap。

我尝试减小图像的大小,并尝试加载静态文件位置,但是在静态文件位置的情况下,它可以正常工作,但是当我尝试动态地执行相同操作时,就会遇到麻烦

虽然没有错误,但结果确实很糟糕。

public String currentPhotoPath;

    public String TruckLoadImageFile = "";

    private File createImageFile() {
        String timeStamp = getCurrentTimeStamp();
        String ImgFileName = "JPEG_" + timeStamp + "TRUCK_LOADED";
        File StorageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = null;
        try {
            image = File.createTempFile(ImgFileName, ".jpg", StorageDir);
            currentPhotoPath = image.getAbsolutePath();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;
    }

    public void TakeImage() {
        final int REQUEST_TAKE_PHOTO = 1;
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        File photoFile = null;
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            photoFile = createImageFile();
            if (photoFile != null) {
                Uri photoURI = getUriForFile(this, "com.example.android.fileprovider", photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);

            }
            System.out.print("###################" + photoFile);
            ImageView truckloadImageView = findViewById(R.id.ecoLoadImageView);
            truckloadImageView.setImageBitmap(BitmapFactory.decodeFile(photoFile.toString()));

        }
}

        private void DisplayImage () {

            ImageView truckloadImageView = findViewById(R.id.ecoLoadImageView);
            System.out.println("****************" + currentPhotoPath + "***************");
        }

        public void TakeImgButton_Click(View view){
            TakeImage();
            DisplayImage();
    }
}

在日志中,我收到如下消息:

I/art: Do partial code cache collection, code=21KB, data=28KB
       After code cache collection, code=21KB, data=28KB
       Increasing code cache capacity to 128KB

但是如果大小是问题所在,那么为什么它像静态文件一样运行。

1 个答案:

答案 0 :(得分:1)

我真的建议您使用lib Picasso库,它具有强大的支持并且非常易于使用。除此之外,您不必担心这种情况。

https://square.github.io/picasso/

File f = new File("path-to-file/file.png")
Picasso.with(getActivity()).load(f).into(imageView);

您还可以像这样调整图像的大小:

Picasso.get()
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)