Bitmapfactory example

后端 未结 1 1579
醉梦人生
醉梦人生 2020-12-01 05:49

I want to create a dynamic image view where every image in my gallery will going to use bitmapfactory and not image drawable that binds in the image view. Is there some site

相关标签:
1条回答
  • 2020-12-01 06:32

    Building Bitmap Objects

    1) From a File

    Use the adb tool with push option to copy test2.png onto the sdcard

    This is the easiest way to load bitmaps from the sdcard. Simply pass the path to the image to BitmapFactory.decodeFile() and let the Android SDK do the rest.

    public class TestImages extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            ImageView image = (ImageView) findViewById(R.id.test_image);
            Bitmap bMap = BitmapFactory.decodeFile("/sdcard/test2.png");
            image.setImageBitmap(bMap);
        }
    }
    

    All this code does is load the image test2.png that we previously copied to the sdcard. The BitmapFactory creates a bitmap object with this image and we use the ImageView.setImageBitmap() method to update the ImageView component.

    2) From an Input stream

    Use BitmapFactory.decodeStream() to convert a BufferedInputStream into a bitmap object.

    public class TestImages extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            ImageView image = (ImageView) findViewById(R.id.test_image);
            FileInputStream in;
            BufferedInputStream buf;
            try {
                in = new FileInputStream("/sdcard/test2.png");
                buf = new BufferedInputStream(in);
                Bitmap bMap = BitmapFactory.decodeStream(buf);
                image.setImageBitmap(bMap);
                if (in != null) {
                in.close();
                }
                if (buf != null) {
                buf.close();
                }
            } catch (Exception e) {
                Log.e("Error reading file", e.toString());
            }
        }
    }
    

    This code uses the basic Java FileInputStream and BufferedInputStream to create the input stream for BitmapFactory.decodeStream(). The file access code should be surrounded by a try/catch block to catch any exceptions thrown by FileInputStream or BufferedInputStream. Also when you're finished with the stream handles they should be closed.

    3) From your Android project's resources

    Use BitmapFactory.decodeResource(res, id) to get a bitmap from an Android resource.

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView image = (ImageView) findViewById(R.id.test_image);
        Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
        image.setImageBitmap(bMap);
    }
    
    0 讨论(0)
提交回复
热议问题