Android 中 Bitmap 常用操作
2017-12-29 13:56
162 查看
Android 中 Bitmap 常用操作
一些Bitmap常用操作写到一个工具类里:读取,保存,裁剪,旋转,缩放,绘制,写字
package com.example.wurui.jnitest; import android.app.Application; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; /** * Created by wurui on 17-12-29. */ public class BitmapProcess { // 读取Bitmap public Bitmap readFromSdcard(){ Bitmap testbitmap = null; try { File file1 = new File("/storage/emulated/0/Android/"+"image.jpg"); InputStream in = new FileInputStream(file1); testbitmap = BitmapFactory.decodeStream(in).copy(Bitmap.Config.ARGB_8888, true); // 不允许对drawable的文件修改,canvas会报错,要拷贝; }catch (Exception e){ } return testbitmap; } public Bitmap readFromAssets(String filename){ Bitmap testbitmap = null; try{ filename = "test/golf299.jpg"; // Assets/test/golf299.jpg InputStream stream = MyApplication.getMyApplication().getApplicationContext().getAssets().open(filename); testbitmap = BitmapFactory.decodeStream(stream); } catch (Exception e){ } return testbitmap; } // 裁剪Bitmap public Bitmap cutBitmap(Bitmap bmp, int w, int h){ return Bitmap.createScaledBitmap(bmp, w, h,true); } // 多张Bitmap融合贴片: 示例4张合并 private Bitmap mergeBitmap(Bitmap m1, Bitmap m2,Bitmap m3,Bitmap m4){ int scaled_size = (int) m1.getHeight()/2; Bitmap map1 = Bitmap.createScaledBitmap(m1,scaled_size,scaled_size,true); Bitmap map2 = Bitmap.createScaledBitmap(m2,scaled_size,scaled_size,true); Bitmap map3 = Bitmap.createScaledBitmap(m3,scaled_size,scaled_size,true); Bitmap map4 = Bitmap.createScaledBitmap(m4,scaled_size,scaled_size,true); Bitmap map0 = Bitmap.createBitmap(m1.getWidth(),m1.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(map0); canvas.drawBitmap(map1,0,0,null); canvas.drawBitmap(map2,scaled_size,0,null); canvas.drawBitmap(map3,0,scaled_size,null); canvas.drawBitmap(map4,scaled_size,scaled_size,null); return map0; } // 旋转和缩放Bitmap public static Bitmap rotateResize(Bitmap bmp, int angle, int dw, int dh){ int w = bmp.getWidth(); int h = bmp.getHeight(); float scaleW = ((float)dw) / w; float scaleH = ((float)dh) / h; Matrix matrix = new Matrix(); matrix.postScale(scaleW,scaleH); matrix.postRotate(angle); bmp = Bitmap.createBitmap(bmp,0, 0, dw, dh, matrix, true); return bmp; } // 在Bitmap上画图和写字 public void drawBitmap(Bitmap resource, int[] eigen) { Canvas canvas = new Canvas(resource); Paint paint = new Paint(); paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(2); canvas.drawCircle(10, 20, 3, paint); canvas.drawLine(0, 0, 10, 10, paint); String text = " 一些字 "; Paint paintText = new Paint(Paint.ANTI_ALIAS_FLAG); paintText.setColor(Color.BLUE); paintText.setStyle(Paint.Style.STROKE); paintText.setStrokeWidth(2); canvas.drawText(text, 10, 40, paintText); } // 保存Bitmap到本地 public boolean saveBitmapTofile(Bitmap bmp, String filename) { if (bmp == null || filename == null) return false; Bitmap.CompressFormat format = Bitmap.CompressFormat.JPEG; int quality = 100; FileOutputStream stream = null; try { stream = new FileOutputStream("/storage/emulated/0/Android/frames/" + filename); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bmp.compress(format, quality, stream); } }
相关文章推荐
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- Android 中 Bitmap 常用操作
- Android中常用的位图操作(View与Bitmap转化、圆角、灰化、提取Alpha、旋转、倒影、剪切……)
- 查看android sqlite数据库常用操作
- android常用的电话操作
- Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移
- Android图片操作(Bitmap)
- Android - Bitmap操作汇总
- android基础adb常用操作
- Android 绘图基础:Bitmap(位图)与Matrix(矩阵)实现图片5种操作(平移、旋转、错切、缩放、对称)
- Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】
- Android的基本常用的短信操作
- Android Studio——Android Bitmap开发之旅--基本操作
- Android游戏开发基础part4--Bitmap位图的渲染与操作