Android Open Source - ImageScanner Bitmap Utils






From Project

Back to project page ImageScanner.

License

The source code is released under:

Apache License

If you think the Android project ImageScanner listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.scanner.utils;
// ww  w.jav  a 2  s .com
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.widget.ImageView;

import com.atermenji.android.iconicdroid.IconicFontDrawable;
import com.atermenji.android.iconicdroid.icon.Icon;

public class BitmapUtils {



  public static void setIconFont(Context context,ImageView iv,Icon icon,int rsid){
    IconicFontDrawable iconDraw = new IconicFontDrawable(context);    
    iconDraw.setIcon(icon);
    iconDraw.setIconColor(context.getResources().getColor(rsid));
    iv.setBackgroundDrawable(iconDraw);
  }
  
  /**
   * get a rect in a bitmap
   * @param bitmap
   * @param edgeLength
   * @return
   */
  public static Bitmap centerSquareScaleBitmap(Bitmap bitmap, int edgeLength) {
    if (null == bitmap || edgeLength <= 0) {
      return null;
    }

    Bitmap result = bitmap;
    int widthOrg = bitmap.getWidth();
    int heightOrg = bitmap.getHeight();

    if (widthOrg > edgeLength && heightOrg > edgeLength) {
      int longerEdge = (int) (edgeLength * Math.max(widthOrg, heightOrg) / Math
          .min(widthOrg, heightOrg));
      int scaledWidth = widthOrg > heightOrg ? longerEdge : edgeLength;
      int scaledHeight = widthOrg > heightOrg ? edgeLength : longerEdge;
      Bitmap scaledBitmap;

      try {
        scaledBitmap = Bitmap.createScaledBitmap(bitmap, scaledWidth,
            scaledHeight, true);
      } catch (Exception e) {
        return null;
      }

      int xTopLeft = (scaledWidth - edgeLength) / 2;
      int yTopLeft = (scaledHeight - edgeLength) / 2;

      try {
        result = Bitmap.createBitmap(scaledBitmap, xTopLeft, yTopLeft,
            edgeLength, edgeLength);
        scaledBitmap.recycle();
      } catch (Exception e) {
        return null;
      }
    }

    return result;
  }
  

  public static int calculateInSampleSize(BitmapFactory.Options options,
      int reqWidth, int reqHeight) {
    // Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {

      final int halfHeight = height / 2;
      final int halfWidth = width / 2;

      // Calculate the largest inSampleSize value that is a power of 2 and
      // keeps both
      // height and width larger than the requested height and width.
      while ((halfHeight / inSampleSize) > reqHeight
          && (halfWidth / inSampleSize) > reqWidth) {
        inSampleSize *= 2;
      }
    }

    return inSampleSize;
  }

  public static Bitmap decodeBitmapFromResource(Resources res,
      int resId, int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(res, resId, options);
    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth,
        reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options);
  }

  public static Bitmap decodeBitmapFromFile(String filePath, int reqWidth,
      int reqHeight) {
    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filePath, options);

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

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return   BitmapFactory.decodeFile(filePath, options);

  }

  
  /**
   * compress the bitmap
   * @param srcPath
   * @return
   */
  public static Bitmap compressImageFromFile(String srcPath) {  
        BitmapFactory.Options newOpts = new BitmapFactory.Options();  
        newOpts.inJustDecodeBounds = true; 
        Bitmap bitmap = BitmapFactory.decodeFile(srcPath, newOpts);  
  
        newOpts.inJustDecodeBounds = false;  
        int w = newOpts.outWidth;  
        int h = newOpts.outHeight;  
        float hh = 600f;//  
        float ww = 360f;//  
        int be = 1;  
        if (w > h && w > ww) {  
            be = (int) (newOpts.outWidth / ww);  
        } else if (w < h && h > hh) {  
            be = (int) (newOpts.outHeight / hh);  
        }  
        if (be <= 0)  
            be = 1;  
        newOpts.inSampleSize = be; 
          
        newOpts.inPreferredConfig = Config.ARGB_8888; 
        newOpts.inPurgeable = true;
        newOpts.inInputShareable = true;  
          
        bitmap = BitmapFactory.decodeFile(srcPath, newOpts);  
 
        return bitmap;  
    }  
  
  
  public static Bitmap getCircleBitmap(Context context, int size,int rsid){
    Bitmap bitmap;
    int radius = size/2;
    bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(bitmap);
    Paint paint = new Paint();
    paint.setStyle(Style.FILL);
    int color = context.getResources().getColor(rsid);
    paint.setColor(color);
    paint.setAntiAlias(true);
    c.drawCircle(radius, radius, radius, paint);
    return bitmap;
  }
  
}




Java Source Code List

com.atermenji.android.iconicdroid.IconicFontDrawable.java
com.atermenji.android.iconicdroid.icon.EntypoIcon.java
com.atermenji.android.iconicdroid.icon.EntypoSocialIcon.java
com.atermenji.android.iconicdroid.icon.FontAwesomeIcon.java
com.atermenji.android.iconicdroid.icon.Icon.java
com.atermenji.android.iconicdroid.icon.IconicIcon.java
com.atermenji.android.iconicdroid.util.TypefaceManager.java
com.example.imagescanner.GalleryFolderActivity.java
com.example.imagescanner.GalleryGridActivity.java
com.example.imagescanner.MainActivity.java
com.scanner.adapter.GalleryFolderListAdapter.java
com.scanner.adapter.GalleryGridAdapter.java
com.scanner.beans.GalleryFolderBean.java
com.scanner.beans.GridImageBean.java
com.scanner.utils.BitmapUtils.java
com.scanner.utils.ConstantsUtils.java
com.scanner.utils.DensityUtil.java
com.scanner.utils.FormatBitmapUtils.java
com.scanner.utils.ImageLoaderCacheHelper.java
com.scanner.utils.L.java
com.scanner.utils.ScannerUtils.java
com.scanner.utils.UIHelper.java