Android Bitmap Load getImageFromUri(Context ctx, Uri uri, int reqWidth, int reqHeight)

Here you can find the source of getImageFromUri(Context ctx, Uri uri, int reqWidth, int reqHeight)

Description

get Image From Uri

Declaration

public static Bitmap getImageFromUri(Context ctx, Uri uri,
            int reqWidth, int reqHeight) throws IOException 

Method Source Code

//package com.java2s;
import java.io.ByteArrayOutputStream;

import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.net.Uri;

public class Main {
    private static final int MAX_WIDTH = 480;
    private static final int MAX_HEIGHT = 800;

    public static Bitmap getImageFromUri(Context ctx, Uri uri,
            int reqWidth, int reqHeight) throws IOException {
        InputStream iStream = ctx.getContentResolver().openInputStream(uri);
        byte[] inputData = getBytes(iStream);

        return decodeSampledBitmapFromBytes(inputData, reqWidth, reqHeight);
    }/*from   w ww .j a v  a2  s .co m*/

    public static byte[] getBytes(InputStream inputStream)
            throws IOException {
        ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
        int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        int len = 0;
        while ((len = inputStream.read(buffer)) != -1) {
            byteBuffer.write(buffer, 0, len);
        }

        return byteBuffer.toByteArray();
    }

    public static Bitmap decodeSampledBitmapFromBytes(byte[] res,
            int reqWidth, int reqHeight) {
        if (reqWidth > MAX_WIDTH)
            reqWidth = MAX_WIDTH;
        if (reqHeight > MAX_HEIGHT)
            reqHeight = MAX_HEIGHT;

        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        options.inPurgeable = true;
        options.inInputShareable = true;
        BitmapFactory.decodeByteArray(res, 0, res.length, options);

        options.inSampleSize = calculateInSampleSize(options, reqWidth,
                reqHeight);

        options.inJustDecodeBounds = false;

        return BitmapFactory.decodeByteArray(res, 0, res.length, options);
    }

    private static int calculateInSampleSize(BitmapFactory.Options options,
            int reqWidth, int reqHeight) {
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;

        if (height > reqHeight || width > reqWidth) {
            if (width > height)
                inSampleSize = Math.round((float) height
                        / (float) reqHeight);
            else
                inSampleSize = Math.round((float) width / (float) reqWidth);
        }

        return inSampleSize;
    }
}

Related

  1. getBitmapFromFile(File file)
  2. getBitmapFromFile(String filePath)
  3. getBitmapFromFileInputStream(FileInputStream is)
  4. getBitmapFromRes(Context context, int resId)
  5. getFromUrl(String url)
  6. getNetBitmap(String strUrl, File file, Context context, File file2)
  7. loadBitmap(Activity activity, int resId, ImageView imageView, int reqWidth, int reqHeight)
  8. loadBitmap(Context c, String fileName)
  9. loadBitmap(Context c, String fileName, int width)