您的位置:首页 > 移动开发 > Android开发

android image最常用操作

2011-12-13 10:31 176 查看
/**

 * @author LuoXianXiong luoxianxiong@gmail.com

 * @version 1.0

 * @deprecation imageUtil

 */

public class ImageUtil {

    // Zoom-in Bitmap

    public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {

        if (w <= 0 || h <= 0) {

            return bitmap;

        }

        int width = bitmap.getWidth();

        int height = bitmap.getHeight();

        Matrix matrix = new Matrix();

        float scaleWidht = ((float) w / width);

        float scaleHeight = ((float) h / height);

        matrix.postScale(scaleWidht, scaleHeight);

        Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);

        return newbmp;

    }

    // Will Drawable into Bitmap

    public static Bitmap drawableToBitmap(Drawable drawable) {

        int width = drawable.getIntrinsicWidth();

        int height = drawable.getIntrinsicHeight();

        Bitmap bitmap = Bitmap.createBitmap(width, height,

                drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);

        Canvas canvas = new Canvas(bitmap);

        drawable.setBounds(0, 0, width, height);

        drawable.draw(canvas);

        return bitmap;

    }

    // Get round Bitmap

    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {

        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);

        Canvas canvas = new Canvas(output);

        final int color = 0xff424242;

        final Paint paint = new Paint();

        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

        final RectF rectF = new RectF(rect);

        paint.setAntiAlias(true);

        canvas.drawARGB(0, 0, 0, 0);

        paint.setColor(color);

        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

        canvas.drawBitmap(bitmap, rect, rect, paint);

        return output;

    }

    // Get reflection Bitmap

    public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {

        final int reflectionGap = 4;

        int width = bitmap.getWidth();

        int height = bitmap.getHeight();

        Matrix matrix = new Matrix();

        matrix.preScale(1, -1);

        Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2, width, height / 2, matrix, false);

        Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height / 2), Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmapWithReflection);

        canvas.drawBitmap(bitmap, 0, 0, null);

        Paint deafalutPaint = new Paint();

        canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);

        canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

        Paint paint = new Paint();

        LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0, bitmapWithReflection.getHeight()

                + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);

        paint.setShader(shader);

        // Set the Transfer mode to be porter duff and destination in

        paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

        // Draw a rectangle using the paint with our linear gradient

        canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);

        return bitmapWithReflection;

    }

    // Create adaptive drawable by drawableId

    public static Drawable createAdaptiveDrawableByDrawableId(Activity activity, int drawableId) {

        Display display = activity.getWindowManager().getDefaultDisplay();

        int width = display.getWidth();

        int height = display.getHeight();

        Bitmap bitmap = ((BitmapDrawable) activity.getResources().getDrawable(drawableId)).getBitmap();

        bitmap = ImageUtil.zoomBitmap(bitmap, width, height);

        Drawable drawable = new BitmapDrawable(bitmap);

        return drawable;

    }

    // Create adaptive drawable by bitmap

    public static Drawable createAdaptiveDrawableByBitmap(Activity activity, Bitmap bitmap) {

        Display display = activity.getWindowManager().getDefaultDisplay();

        int width = display.getWidth();

        int height = display.getHeight();

        bitmap = ImageUtil.zoomBitmap(bitmap, width, height);

        Drawable drawable = new BitmapDrawable(bitmap);

        return drawable;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息