Android几个bitmap相关的方法

来源:互联网 发布:网络模块接a还是b 编辑:程序博客网 时间:2024/05/18 00:04

package com.forgirl.utils;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.ContentValues;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Paint.Align;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore.Images.Media;

public class BitmapUtils {

//将日期字符串打印到指定的图片上,并保存在系统数据库中返回uripublic static String drawDateOnBitmap(Context context,String date){    Bitmap bg = getBitmap(context, "png/date_bg_128.png");    Bitmap markedBitmap = createWatermark(bg, date);    try {        Uri uri = context.getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,new ContentValues());        OutputStream os = context.getContentResolver().openOutputStream(uri);        markedBitmap.compress(CompressFormat.PNG, 90, os);        return uri.toString();    } catch (FileNotFoundException e) {        e.printStackTrace();    }    return null;}//从assert文件中读取图片,返回bitmappublic static Bitmap getBitmap(Context context,String fileName){    AssetManager assetManager = context.getAssets();    InputStream in = null;    Bitmap bitmap = null;    try {        in = assetManager.open(fileName);        bitmap = BitmapFactory.decodeStream(in);        if (bitmap==null) {            throw new RuntimeException("Could not load bitmap from "+fileName);        }    } catch (IOException e) {        e.printStackTrace();    }finally{        assetManager = null;        if (in!=null) {            try {                in.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }    return bitmap;}//将日期印在图片上,返回bitmapprivate static Bitmap createWatermark(Bitmap target, String date) {    int w = target.getWidth();    int h = target.getHeight();    Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(bmp);    Paint paint = new Paint();    // text的颜色    paint.setColor(Color.DKGRAY);    paint.setTextAlign(Align.CENTER);    Typeface typeface = Typeface.create(Typeface.SERIF, Typeface.ITALIC);    paint.setTypeface(typeface);    // 字体大小    paint.setTextSize(35);    paint.setAntiAlias(true);// 去锯齿    canvas.drawBitmap(target, 0, 0, paint);    String[] arr = date.split(":");    canvas.drawText(arr[0], w/2, h/2-10, paint);    canvas.drawText(arr[1]+"-"+arr[2], w/2, h/2+25, paint);    canvas.save(Canvas.ALL_SAVE_FLAG);    canvas.restore();    return bmp;}//从指定的uri获取bitmappublic static Bitmap getBitmap(Context context,Uri uri){    try {        InputStream in = context.getContentResolver().openInputStream(uri);        Bitmap bitmap = BitmapFactory.decodeStream(in);        return bitmap;    } catch (FileNotFoundException e) {        e.printStackTrace();    }    return null;}//bitmap转换成drawablepublic static Drawable bitmapToDrawable(Context context,Bitmap bitmap){    return new BitmapDrawable(context.getResources(), bitmap);}

}

1 0