Java tutorial
//package com.java2s; //License from project: Apache License import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class Main { public static Bitmap getFitSampleBitmap(String file_path, int width, int height) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(file_path, options); options.inSampleSize = getFitInSampleSize(width, height, options); options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(file_path, options); } public static Bitmap getFitSampleBitmap(Resources resources, int resId, int width, int height) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(resources, resId, options); options.inSampleSize = getFitInSampleSize(width, height, options); options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(resources, resId, options); } public static Bitmap getFitSampleBitmap(InputStream inputStream, String catchFilePath, int width, int height) throws Exception { return getFitSampleBitmap(catchStreamToFile(catchFilePath, inputStream), width, height); } public static int getFitInSampleSize(int reqWidth, int reqHeight, BitmapFactory.Options options) { int inSampleSize = 1; if (options.outWidth > reqWidth || options.outHeight > reqHeight) { int widthRatio = Math.round((float) options.outWidth / (float) reqWidth); int heightRatio = Math.round((float) options.outHeight / (float) reqHeight); inSampleSize = Math.min(widthRatio, heightRatio); } return inSampleSize; } public static String catchStreamToFile(String catchFile, InputStream inStream) throws Exception { File tempFile = new File(catchFile); try { if (tempFile.exists()) { tempFile.delete(); } tempFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } FileOutputStream fileOutputStream = new FileOutputStream(tempFile); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { fileOutputStream.write(buffer, 0, len); } inStream.close(); fileOutputStream.close(); return catchFile; } }