对图片进行二次采样,解决图片过大出现OM
2016-11-29 13:57
363 查看
二次采样
public class ThumbnailUtils {
// 对图像数据源采样
public static Bitmap getThumbnailBitmap(byte[] data, int sampleSize) {
// 第一次采样:目的是只获取图片的宽度和高度,并不希望获得图片像素点的全部数据
BitmapFactory.Options options = new BitmapFactory.Options();
// 第一次采样,只采图片的边界
options.inJustDecodeBounds = true;
// 开始执行第一次采样
BitmapFactory.decodeByteArray(data, 0, data.length, options);
// 设置压缩比例
options.inSampleSize = sampleSize;
// 图片进行第二次采样,既要采集图片的边界信息,又需要采集图片像素点的数据
options.inJustDecodeBounds = false;
Bitmap thumbnailBitmap = BitmapFactory
.decodeByteArray(data, 0, data.length, options);
return thumbnailBitmap;
}
// 对Bitmap对象采样,压缩倍数只有为2的n次方倍数时有效
public static Bitmap getThumbnailBitmap(Bitmap bitmap, int sampleSize) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
// 2.解码边缘
options.inJustDecodeBounds = true;
// 3进行图片解码
BitmapFactory.decodeByteArray(data, 0, data.length, options);
options.inSampleSize = sampleSize;
// 4.锁住边缘
options.inJustDecodeBounds = false;
// 5.通过参数获得新的位图
Bitmap thumbnailBitmap = BitmapFactory
.decodeByteArray(data, 0, data.length, options);
return thumbnailBitmap;
}
// 对本地图片进行二次采样
private Bitmap getThumbnailBitmap(String pathName, int sampleSize) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(pathName, options);
options.inSampleSize = sampleSize;
options.inJustDecodeBounds = false;
Bitmap thumbnailBitmap = BitmapFactory.decodeFile(pathName, options);
return thumbnailBitmap;
}
}
public class ThumbnailUtils {
// 对图像数据源采样
public static Bitmap getThumbnailBitmap(byte[] data, int sampleSize) {
// 第一次采样:目的是只获取图片的宽度和高度,并不希望获得图片像素点的全部数据
BitmapFactory.Options options = new BitmapFactory.Options();
// 第一次采样,只采图片的边界
options.inJustDecodeBounds = true;
// 开始执行第一次采样
BitmapFactory.decodeByteArray(data, 0, data.length, options);
// 设置压缩比例
options.inSampleSize = sampleSize;
// 图片进行第二次采样,既要采集图片的边界信息,又需要采集图片像素点的数据
options.inJustDecodeBounds = false;
Bitmap thumbnailBitmap = BitmapFactory
.decodeByteArray(data, 0, data.length, options);
return thumbnailBitmap;
}
// 对Bitmap对象采样,压缩倍数只有为2的n次方倍数时有效
public static Bitmap getThumbnailBitmap(Bitmap bitmap, int sampleSize) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
// 2.解码边缘
options.inJustDecodeBounds = true;
// 3进行图片解码
BitmapFactory.decodeByteArray(data, 0, data.length, options);
options.inSampleSize = sampleSize;
// 4.锁住边缘
options.inJustDecodeBounds = false;
// 5.通过参数获得新的位图
Bitmap thumbnailBitmap = BitmapFactory
.decodeByteArray(data, 0, data.length, options);
return thumbnailBitmap;
}
// 对本地图片进行二次采样
private Bitmap getThumbnailBitmap(String pathName, int sampleSize) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(pathName, options);
options.inSampleSize = sampleSize;
options.inJustDecodeBounds = false;
Bitmap thumbnailBitmap = BitmapFactory.decodeFile(pathName, options);
return thumbnailBitmap;
}
}
相关文章推荐
- Android webview解决图片过大出现水平滚动条的问题
- Android加载大图片时的OOM异常及解决(图片的二次采样)
- 使用 ScriptIntrinsicBlur 进行高斯模糊 出现图片花屏 解决
- 加载一张很大的图片 的时候可能会出现内存溢出,,,处理这张大图片...二次采样
- 在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对于该问题的解决方法也是“见机行事”。
- hibernate中两个实体类与同一张数据表进行映射后出现的问题解决
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- 用QQ进行远程协助的时候,出现初始化DLL错误问题的解决
- Sharepoint 站点下应用程序虚拟路径下出现"不能进行输出缓存处理",错误ID 5787 解决方法
- 在进行ASP调试时,可能出现的错误及尝试解决办法
- float解决图片下出现空白的问题
- 解决使用USB键盘进行游戏后按任意键出现蓝屏的错误(转)
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- 用base64加解密解决用xml传输图片或附件生成时出现乱码的问题
- 解决Oracle透明网关连接SQL server进行数据操作出现“列名无效”问题
- DB2在导入数据时,如果数据量过大,出现事务日志满的错误(Database transaction log is full)该如何解决,commitcount使用
- 程序本身并不错误但出现BGI Error: Graphics not initialized (use 'initgraph') 用C进行图形编程时 该怎么去解决
- 今天 发现 LCD显示器 出现 "OSD Lockout" 并且无法对显示器进行调节,解决方法如文中所示
- LBS BLOG在IE7下图片出现滚动条的解决方法
- 水晶报表使用经验谈1--建立水晶报表第一步及编译最易出现错误的解决方法及报表转换成pdf文档进行打印方法