没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Android图片的处理工具类BitmapUtils,供大家参考,具体内容如下 项目中经常会用到图片,所以在这先简单的总结一下。闲言少叙,上代码。 package com.lvstudio.myapp.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics
资源推荐
资源详情
资源评论
Android图片处理工具类图片处理工具类BitmapUtils
Android图片的处理工具类BitmapUtils,供大家参考,具体内容如下
项目中经常会用到图片,所以在这先简单的总结一下。闲言少叙,上代码。
package com.lvstudio.myapp.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by LvStudio on 2016/11/7.
*/
public class BitmapUtils {
/**
* 屏幕分辨率和指定清晰度的图片压缩方法
*
* @param context
* @param image Bitmap图片
* @return
*/
public static Bitmap comp(Context context, Bitmap image) {
int maxLength = 1024 * 1024; // 预定的图片最大内存,单位byte
// 压缩大小
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到
baos中
int options = 100;
while (baos.toByteArray().length > maxLength) { // 循环判断,大于继续压缩
options -= 10;// 每次都减少10
baos.reset();// 重置baos即清空baos
image.compress(Bitmap.CompressFormat.JPEG, options, baos);//PNG 压缩options%
}
// 压缩尺寸
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
BitmapFactory.Options opts = new BitmapFactory.Options(); // 选项对象(在加载图片时使用)
opts.inJustDecodeBounds = true; // 修改选项, 只获取大小
BitmapFactory.decodeStream(bais, null, opts);// 加载图片(只得到图片大小)
// 获取屏幕大小,按比例压缩
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int scaleX = opts.outWidth / manager.getDefaultDisplay().getWidth(); // X轴缩放比例(图片宽度/屏幕宽度)
int scaleY = opts.outHeight / manager.getDefaultDisplay().getHeight(); // Y轴缩放比例
int scale = scaleX > scaleY ? scaleX : scaleY; // 图片的缩放比例(X和Y哪个大选哪个)
opts.inJustDecodeBounds = false; // 修改选项, 不只解码边界
opts.inSampleSize = scale > 1 ? scale : 1; // 修改选项, 加载图片时的缩放比例
return BitmapFactory.decodeStream(bais, null, opts); // 加载图片(得到压缩后的图片)
}
资源评论
weixin_38618140
- 粉丝: 9
- 资源: 908
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MSCOMM控件资源WIN-ALL
- default.custom.yaml # RIme 输入法 的简体设置文件
- MT7621路由器SDK和HDK文件,MT7621无线路由器,MediaTek-ApSoC-SDK-4320-20150414.tar.bz2 AP-MT7621 MT7612E MT7603E-V4
- 广播星历位置计算,精密星历提供的坐标进行求差
- 默纳克刷机,默纳克刷协议,默纳克显示板 外呼板协议更改 烧录 默纳克各种软件各种刷机,含主板、轿顶板、外呼板刷机软件原程序、操作器刷机软件及协议一应俱全
- 连续性和可导性入门学习(微积分前置知识)
- Unistorm最新unity天气资源包
- 基于yolov5实现的AI自动瞄准的python源码+文档说明(亲测可用)
- 计算机基础知识点与前沿技术全面解析
- 课程设计javaweb的企业人事管理系统源码+数据库+实验报告(高分项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功