Provides common tools for manipulating Bitmap objects. : Bitmap « 2D Graphics « Android






Provides common tools for manipulating Bitmap objects.

    
/**
 * Copyright 2009, 2010 Kevin Gaudin
 *
 * This file is part of EmailAlbum.
 *
 * EmailAlbum is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * EmailAlbum is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with EmailAlbum.  If not, see <http://www.gnu.org/licenses/>.
 */
//package com.kg.emailalbum.mobile.util;

import java.io.File;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.net.Uri;
import android.provider.MediaStore.Images;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;

/**
 * Provides common tools for manipulating Bitmap objects.
 * 
 * @author Normal
 * 
 */
public class BitmapUtil {
    private static DisplayMetrics mMetrics = null;
    private static final String LOG_TAG = BitmapUtil.class.getSimpleName();
    private static Uri sStorageURI = Images.Media.EXTERNAL_CONTENT_URI;

    /**
     * Rotate a bitmap.
     * 
     * @param bmp
     *            A Bitmap of the picture.
     * @param degrees
     *            Angle of the rotation, in degrees.
     * @return The rotated bitmap, constrained in the source bitmap dimensions.
     */
    public static Bitmap rotate(Bitmap bmp, float degrees) {
        if (degrees % 360 != 0) {
            Log.d(LOG_TAG, "Rotating bitmap " + degrees + "");
            Matrix rotMat = new Matrix();
            rotMat.postRotate(degrees);

            if (bmp != null) {
                Bitmap dst = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp
                        .getHeight(), rotMat, false);

                return dst;
            }
        } else {
            return bmp;
        }
        return null;
    }

    /**
     * Store a picture that has just been saved to disk in the MediaStore.
     * 
     * @param imageFile
     *            The File of the picture
     * @return The Uri provided by the MediaStore.
     */
    public static Uri storePicture(Context ctx, File imageFile, String imageName) {
        ContentResolver cr = ctx.getContentResolver();
        imageName = imageName.substring(imageName.lastIndexOf('/') + 1);
        ContentValues values = new ContentValues(7);
        values.put(Images.Media.TITLE, imageName);
        values.put(Images.Media.DISPLAY_NAME, imageName);
        values.put(Images.Media.DESCRIPTION, "");
        values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
        values.put(Images.Media.MIME_TYPE, "image/jpeg");
        values.put(Images.Media.ORIENTATION, 0);
        File parentFile = imageFile.getParentFile();
        String path = parentFile.toString().toLowerCase();
        String name = parentFile.getName().toLowerCase();
        values.put(Images.ImageColumns.BUCKET_ID, path.hashCode());
        values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name);
        values.put("_data", imageFile.toString());

        Uri uri = cr.insert(sStorageURI, values);

        return uri;
    }

    public static Uri getContentUriFromFile(Context ctx, File imageFile) {
        Uri uri = null;
        ContentResolver cr = ctx.getContentResolver();
        // Columns to return
        String[] projection = { Images.Media._ID, Images.Media.DATA };
        // Look for a picture which matches with the requested path
        // (MediaStore stores the path in column Images.Media.DATA) 
        String selection = Images.Media.DATA + " = ?";
        String[] selArgs = { imageFile.toString() };

        Cursor cursor = cr.query(sStorageURI, projection, selection, selArgs,
                null);

        if (cursor.moveToFirst()) {

            String id;
            int idColumn = cursor.getColumnIndex(Images.Media._ID);
            id = cursor.getString(idColumn);

            uri = Uri.withAppendedPath(sStorageURI, id);
        }
        cursor.close();
        if (uri != null) {
            Log.d(LOG_TAG, "Found picture in MediaStore : "
                    + imageFile.toString() + " is " + uri.toString());
        } else {
            Log.d(LOG_TAG, "Did not find picture in MediaStore : "
                    + imageFile.toString());
        }
        return uri;
    }

    /**
     * @param ctx
     */
    public static float getDensity(Context ctx) {
        if (mMetrics == null) {
            mMetrics = new DisplayMetrics();
            ((WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE))
                    .getDefaultDisplay().getMetrics(mMetrics);
        }
        return mMetrics.density;
    }
}

   
    
    
    
  








Related examples in the same category

1.Using BitmapFactory to decode Resource
2.Capture and save to Bitmap
3.Bitmap size
4.Draw Bitmap on Canvas
5.Bitmap.createBitmap
6.Draw Bitmap on Canvas with Matrix
7.Create a Bitmap for drawing
8.Load Bitmap and Draw
9.Bitmap and RenderScript
10.Alpha Bitmap
11.Load Bitmap from InputStream
12.Bitmap Decode
13.Bitmap Mesh
14.Bitmap Pixels
15.Create a Bitmap
16.Bitmap.Config.ARGB_8888,Bitmap.Config.RGB_565, Bitmap.Config.ARGB_4444
17.Purgeable Bitmap
18.Create a bitmap with a circle
19.This activity demonstrates various ways density can cause the scaling of bitmaps and drawables.
20.Get the current system wallpaper, modifies it and sets the modified bitmap as system wallpaper.
21.Bitmap cache by WeakHashMap
22.Memory Cache for Bitmap
23.Load Bitmap from resource
24.Crop Bitmap
25.Create Scaled Bitmap
26.downloading a bitmap image from http and setting it to given image view asynchronously
27.Get Bitmap From Local Path
28.Get Bitmap From Bytes
29.Compress Bitmap
30.Resize Bitmap
31.captures given view and converts it to a bitmap
32.Save Bitmap and BitmapFactory.decodeFile
33.Generate a blurred bitmap from given one
34.Get Bitmap From Name
35.Load Bitmap with Context
36.Load Bitmap from InputStream
37.Get Bitmap from Url with HttpURLConnection
38.Rotate Bitmap
39.Get Texture From Bitmap Resource and BitmapFactory.decodeStream
40.Drawable to Bitmap
41.Save Bitmap to and load from External Storage
42.Get Image Bitmap From Url
43.Scale Bitmap
44.Unscaled Bitmap Loader
45.Save Bitmap to External Storage Directory
46.Compress and save Bitmap image
47.Bitmap downloading, processing
48.Rotate a Bitmap
49.Save/load Bitmap
50.Find components of color of the bitmap at x, y.
51.get Bitmap From Url
52.Draw Bitmap and Drawable
53.Rotate, transform Bitmap
54.Rotate specified Bitmap by a random angle. Scales the specified Bitmap to fit within the specified dimensions.
55.Loads a bitmap from the specified url.
56.Bitmap Refelection
57.Create a transparent bitmap from an existing bitmap by replacing certain color with transparent
58.Get Texture From Bitmap Resource
59.Bitmap Resize
60.bitmap to Byte
61.Flip Image
62.Scale an Image
63.Translate Image
64.Image Mirror
65.Moving an Image with Motion
66.Draw on Picture and save
67.Calculate optimal preview size from given parameters
68.generate Mipmaps For Bound Texture