Bitmap用法总结

来源:互联网 发布:中国人口最新数据 编辑:程序博客网 时间:2024/06/05 09:55

Drawable----Bitmap

public static Bitmap drawableToBitmap(Drawable drawable) {Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(),drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);Canvas canvas = new Canvas(bitmap);drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());drawable.draw(canvas);return bitmap;}



R_drawable_launcher----Bitmap

Resources res=getResources();Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.launcher);


Bitmap----byte[]

private byte[] Bitmap2Bytes(Bitmap bm) {ByteArrayOutputStream baos = new ByteArrayOutputStream();bm.compress(Bitmap.CompressFormat.PNG, 100, baos);<span style="white-space:pre"></span>return baos.toByteArray();}

byte[]----Bitmap

private Bitmap Bytes2Bimap(byte[] b) {if (b.length != 0) {return BitmapFactory.decodeByteArray(b, 0, b.length);} else {return null;}}



保存Bitmap

public boolean saveBitmap2file(Bitmap bmp, String filename) {CompressFormat format = Bitmap.CompressFormat.JPEG;int quality = 100;OutputStream stream = null;try {stream = new FileOutputStream("/sdcard/" + filename);} catch (FileNotFoundException e) {e.printStackTrace();}return bmp.compress(format, quality, stream);}


将图片按自己的要求缩放

public Bitmap zoomBmp() {// 图片源Bitmap bm = BitmapFactory.decodeStream(context.getResources().openRawResource(R.drawable.ic_launcher));// 获得图片的宽高int width = bm.getWidth();int height = bm.getHeight();// 设置想要的大小int newWidth = 320;int newHeight = 480;// 计算缩放比例float scaleWidth = ((float) newWidth) / width;float scaleHeight = ((float) newHeight) / height;// 取得想要缩放的matrix参数Matrix matrix = new Matrix();matrix.postScale(scaleWidth, scaleHeight);// 得到新的图片Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,true);return newbm;}



放大缩小图片

public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {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;}

有两个包中含有Matrix;
//import android.opengl.Matrix;
import android.graphics.Matrix;
这里使用的是android.graphics.Matrix;


圆角图片的方法

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));//PorterDuffXfermodecanvas.drawBitmap(bitmap, rect, rect, paint);return output;}


获得带倒影的图片

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 inpaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));// Draw a rectangle using the paint with our linear gradientcanvas.drawRect(0, height, width, bitmapWithReflection.getHeight()+ reflectionGap, paint);return bitmapWithReflection;}

转自:http://tonmly.blog.163.com/blog/static/174712856201171501256733/



0 0
原创粉丝点击