实用代码块记录10
来源:互联网 发布:ubuntu添加环境变量 编辑:程序博客网 时间:2024/06/05 17:35
Bitmap操作
import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.Base64;public class BitmapUtils { /** * convert Bitmap to byte array * * @param b * @return */ public static byte[] bitmapToByte(Bitmap b) { if (b == null) { return null; } ByteArrayOutputStream o = new ByteArrayOutputStream(); b.compress(Bitmap.CompressFormat.PNG, 100, o); return o.toByteArray(); } /** * convert byte array to Bitmap * * @param b * @return */ public static Bitmap byteToBitmap(byte[] b) { return (b == null || b.length == 0) ? null : BitmapFactory .decodeByteArray(b, 0, b.length); } /** * convert Drawable to Bitmap * * @param d * @return */ public static Bitmap drawableToBitmap(Drawable d) { return d == null ? null : ((BitmapDrawable) d).getBitmap(); } /** * convert Bitmap to Drawable * * @param b * @return */ public static Drawable bitmapToDrawable(Bitmap b) { return b == null ? null : new BitmapDrawable(b); } /** * convert Drawable to byte array * * @param d * @return */ public static byte[] drawableToByte(Drawable d) { return bitmapToByte(drawableToBitmap(d)); } /** * convert byte array to Drawable * * @param b * @return */ public static Drawable byteToDrawable(byte[] b) { return bitmapToDrawable(byteToBitmap(b)); } /** * 获得圆角图片 * * @author huxj * @param bitmap * Bitmap资源 * @param roundPx * 弧度 * @return Bitmap 圆角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; } /** * 保存图片至本地文件 */ public static void saveBitmapToFile(Bitmap bmp, String dir, String path) { File file = new File(dir); if (!file.isDirectory()) { file.mkdirs(); } File f = new File(path); try { f.createNewFile(); FileOutputStream fOut = null; fOut = new FileOutputStream(f); bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut); fOut.flush(); fOut.close(); } catch (Exception e) { e.printStackTrace(); } } /** 读取本地图片文件,压缩至合适宽高,返回bitmap */ public static Bitmap getBitmapFromFile(String path, int mScreenWidth, int mScreenHeight) { if (path != null) { BitmapFactory.Options options = null; InputStream is = null; try { options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; is = new FileInputStream(path); BitmapFactory.decodeStream(is, null, options); int w = options.outWidth; int h = options.outHeight; options = new BitmapFactory.Options(); options.inSampleSize = Math.max((int) (w / mScreenWidth), h / mScreenHeight); options.inJustDecodeBounds = false; is.close(); is = new FileInputStream(path); return BitmapFactory.decodeStream(is, null, options); } catch (Throwable e) { e.printStackTrace(); } finally { try { if (is != null) is.close(); } catch (Exception e) { e.printStackTrace(); } } } return null; } /** 读取本地图片,并压缩scale倍,返回bitmap */ public static Bitmap getScaleBitmapFromFile(String path, int scale) { if (path != null) { try { BitmapFactory.Options options = new BitmapFactory.Options(); InputStream is = new FileInputStream(path); options = new BitmapFactory.Options(); options.inSampleSize = scale; options.inJustDecodeBounds = false; is.close(); is = new FileInputStream(path); return BitmapFactory.decodeStream(is, null, options); } catch (Throwable e) { e.printStackTrace(); } } return null; } /** 读取资源图片,返回bitmap */ public static Bitmap getBitmapForResource(Context context, int resourceId, int mScreenWidth, int mScreenHeight) { try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(context.getResources(), resourceId, options); int w = options.outWidth; int h = options.outHeight; options = new BitmapFactory.Options(); options.inSampleSize = Math.max((int) (w / mScreenWidth), h / mScreenHeight); options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(context.getResources(), resourceId, options); } catch (Throwable e) { e.printStackTrace(); } return null; } @SuppressLint("NewApi") public static Bitmap stringtoBitmap(String string) { // 将字符串转换成Bitmap类型 Bitmap bitmap = null; try { byte[] bitmapArray; bitmapArray = Base64.decode(string, Base64.DEFAULT); bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length); } catch (Exception e) { e.printStackTrace(); } return bitmap; } /** * 处理图片 * * @param bm * 所要转换的bitmap * @param newWidth新的宽 * @param newHeight新的高 * @return 指定宽高的bitmap */ public static Bitmap scaleImg(Bitmap bm, int newWidth, int newHeight) { // 获得图片的宽高 int width = bm.getWidth(); int height = bm.getHeight(); // 计算缩放比例 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; } /** * 处理图片 * * @param bm * 所要转换的bitmap ,按宽度保持比例 * @param newWidth新的宽 * @return 指定宽的bitmap */ public static Bitmap scaleImg(Bitmap bm, int newWidth) { // 获得图片的宽高 int width = bm.getWidth(); int height = bm.getHeight(); // 计算缩放比例 float scaleWidth = ((float) newWidth) / width; // 取得想要缩放的matrix参数 Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleWidth); // 得到新的图片 Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true); return newbm; }}
0 0
- 实用代码块记录10
- 实用代码块记录1
- 实用代码块记录2
- 实用代码块记录3
- 实用代码块记录4
- 实用代码块记录5
- 实用代码块记录6
- 实用代码块记录7
- 实用代码块记录8
- 实用代码块记录9
- android实用代码块
- Shell 实用代码块
- 实用代码块
- 块代码实用入门指南
- 数组实用代码块简记
- android超实用代码块
- [代码块]记录
- 实用代码片段---持续记录
- 【Objective-C】类别(拓展类)、协议
- I2C总线协议
- 知乎上说的关于HMM 隐马尔科夫链的
- SpringMVC框架原理图
- 嵌入式入门知识
- 实用代码块记录10
- CCF 201604-4 游戏
- 58. Length of Last Word
- 资治通鉴导读笔记
- LeetCode 070 Climbing Stairs
- 学徒浅析Android开发:杂谈——仿QQ列表左右滑动效果
- 秦绪文:打造自己个人品牌文案
- Android(ADT Android SDK Manager安装Intel Hardware Accelerated Execution Manager)
- c3p0连接池的简单配置