Show Image View from file path?

前端 未结 13 727
眼角桃花
眼角桃花 2020-11-22 11:18

I need to show an image by using the file name only, not from the resource id.

ImageView imgView = new ImageView(this);
imgView.setBackgroundResource(R.drawa         


        
相关标签:
13条回答
  • 2020-11-22 11:33
           public static Bitmap decodeFile(String path) {
        Bitmap b = null;
        File f = new File(path);
        // Decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
    
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(f);
            BitmapFactory.decodeStream(fis, null, o);
            fis.close();
    
            int IMAGE_MAX_SIZE = 1024; // maximum dimension limit
            int scale = 1;
            if (o.outHeight > IMAGE_MAX_SIZE || o.outWidth > IMAGE_MAX_SIZE) {
                scale = (int) Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE / (double) Math.max(o.outHeight, o.outWidth)) / Math.log(0.5)));
            }
    
            // Decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
    
            fis = new FileInputStream(f);
            b = BitmapFactory.decodeStream(fis, null, o2);
            fis.close();
    
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
        return b;
    }
    
    public static Bitmap showBitmapFromFile(String file_path)
    {
        try {
            File imgFile = new  File(file_path);
            if(imgFile.exists()){
    
                Bitmap pic_Bitmap = decodeFile(file_path);
                return pic_Bitmap;
    
            }
        } catch (Exception e) {
            MyLog.e("Exception showBitmapFromFile");
            return null;
        }
        return null;
    }   
    

    if you are using image loading in List view then use Aquery concept .

    https://github.com/AshishPsaini/AqueryExample

         AQuery  aq= new AQuery((Activity) activity, convertView);
                //load image from file, down sample to target width of 250 pixels .gi 
        File file=new File("//pic/path/here/aaaa.jpg");
        if(aq!=null)
        aq.id(holder.pic_imageview).image(file, 250);
    
    0 讨论(0)
  • 2020-11-22 11:34

    You may use this to access a specific folder and get particular image

     public void Retrieve(String path, String Name)
       {
        File imageFile = new File(path+Name);
    
        if(imageFile.exists()){
    
            Bitmap myBitmap = BitmapFactory.decodeFile(path+Name);
            myImage = (ImageView) findViewById(R.id.savedImage);
            myImage.setImageBitmap(myBitmap);
            Toast.makeText(SaveImage.this, myBitmap.toString(), Toast.LENGTH_LONG).show();
    
        }
    }
    

    And then you can call it by

    Retrieve(Environment.getExternalStorageDirectory().toString()+"/Aqeel/Images/","Image2.PNG");
    Toast.makeText(SaveImage.this, "Saved", Toast.LENGTH_LONG).show();
    
    0 讨论(0)
  • 2020-11-22 11:39

    Labeeb is right about why you need to set image using path if your resources are already laying inside the resource folder ,

    This kind of path is needed only when your images are stored in SD-Card .

    And try the below code to set Bitmap images from a file stored inside a SD-Card .

    File imgFile = new  File("/sdcard/Images/test_image.jpg");
    
    if(imgFile.exists()){
    
        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    
        ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
    
        myImage.setImageBitmap(myBitmap);
    
    }
    

    And include this permission in the manifest file:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    0 讨论(0)
  • 2020-11-22 11:39

    onLoadImage Full load

    private void onLoadImage(final String imagePath) {
        ImageSize targetSize = new ImageSize(imageView.getWidth(), imageView.getHeight()); // result Bitmap will be fit to this size
    
        //ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleto
        com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
        imageLoader.init(ImageLoaderConfiguration.createDefault(getContext()));
    
        imageLoader.loadImage(imagePath, targetSize, new SimpleImageLoadingListener() {
            @Override
            public void onLoadingStarted(final String imageUri, View view) {
                super.onLoadingStarted(imageUri, view);
    
                progress2.setVisibility(View.VISIBLE);
    
                new Handler().post(new Runnable() {
                    public void run() {
                        progress2.setColorSchemeResources(android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light);
    
                        // Picasso.with(getContext()).load(imagePath).into(imageView);
                        // Picasso.with(getContext()).load(imagePath) .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).into(imageView);
    
                        Glide.with(getContext())
                                .load(imagePath)
                                .asBitmap()
                                .into(imageView);
                    }
              });
            }
    
            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                if (view == null) {
                    progress2.setVisibility(View.INVISIBLE);
                }
                // else { 
                  Log.e("onLoadImage", "onLoadingComplete");
                //   progress2.setVisibility(View.INVISIBLE);
                // }
                // setLoagingCompileImage();
            }
    
            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                super.onLoadingFailed(imageUri, view, failReason);
                if (view == null) {
                    progress2.setVisibility(View.INVISIBLE);
                }
                Log.e("onLoadingFailed", imageUri);
                Log.e("onLoadingFailed", failReason.toString());
            }
    
            @Override
            public void onLoadingCancelled(String imageUri, View view) {
                super.onLoadingCancelled(imageUri, view);
                if (view == null) {
                    progress2.setVisibility(View.INVISIBLE);
                }
                Log.e("onLoadImage", "onLoadingCancelled");
            }
        });
    }
    
    0 讨论(0)
  • 2020-11-22 11:40
    private void showImage(ImageView img, String absolutePath) {
      
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 8;
        Bitmap bitmapPicture = BitmapFactory.decodeFile(absolutePath);
        img.setImageBitmap(bitmapPicture);
    
    }
    
    0 讨论(0)
  • 2020-11-22 11:44
    mageView.setImageResource(R.id.img);
    
    0 讨论(0)
提交回复
热议问题