android 图片过长,【05-25求助】怎样无损加载一张过长的图片
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class MainWangActivity extends Activity{
private static final String TAG = MainWangActivity.class.getName();
private ImageView imageView1,imageView2,imageView3;
/**
* 图片显示的宽度,这里为屏幕的宽度
*/
int width;
int heightFollwidth;
int imgW,imgH;
// InputStream inputStream;
int dealImgW1,dealImgH1;
int dealImgW2,dealImgH2;
int dealImgW3,dealImgH3;
Bitmap bitmap,dealBitmap1,dealBitmap2,dealBitmap3;
Rect rect1,rect2,rect3;
BitmapRegionDecoder bitmapRegionDecoder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
width = metric.widthPixels; // 屏幕宽度(像素)
System.out.println("屏幕width: " +width+"\ndip2px(this, 460): "+dip2px(this, 460));
setContentView(R.layout.main_wang);
Log.d(TAG, "1");
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.longimg);
Log.d(TAG, "2"); // 1.4s
//inputStream = Bitmap2Is(bitmap);
imgW = bitmap.getWidth(); // 这个值是dp(=920),它大于图片实际像素宽px(=460)
imgH = bitmap.getHeight();
System.out.println("原始长图w: "+bitmap.getWidth()+"\n原始长图h: "+bitmap.getHeight());
imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView2 = (ImageView) findViewById(R.id.imageView2);
imageView3 = (ImageView) findViewById(R.id.imageView3);
rect1 = new Rect(0, 0, imgW, imgH/3);
rect2 = new Rect(0, imgH/3, imgW, 2*imgH/3);
rect3 = new Rect(0, 2*imgH/3, imgW, 3*imgH/3);
try {
Log.d(TAG, "3"); // 0.004s
bitmapRegionDecoder = BitmapRegionDecoder.newInstance(Bitmap2Is(bitmap), false);
Log.d(TAG, "4"); // 1s
dealBitmap1 = bitmapRegionDecoder.decodeRegion(rect1, null);
dealBitmap2 = bitmapRegionDecoder.decodeRegion(rect2, null);
dealBitmap3 = bitmapRegionDecoder.decodeRegion(rect3, null);
Log.d(TAG, "5"); // 1.1s
if(dealBitmap1!=null&&dealBitmap2!=null&&dealBitmap3!=null){
Log.d(TAG, "6"); // 0.012s
dealImgW1 = dealBitmap1.getWidth();
dealImgH1 = dealBitmap1.getHeight();
dealImgW2 = dealBitmap2.getWidth();
dealImgH2 = dealBitmap2.getHeight();
dealImgW3 = dealBitmap3.getWidth();
dealImgH3 = dealBitmap3.getHeight();
heightFollwidth = width*dealImgH1/dealImgW1;
imageView1.setLayoutParams(new LinearLayout.LayoutParams(width, heightFollwidth));
imageView2.setLayoutParams(new LinearLayout.LayoutParams(width, heightFollwidth));
imageView3.setLayoutParams(new LinearLayout.LayoutParams(width, heightFollwidth));
imageView1.setImageBitmap(dealBitmap1);
imageView2.setImageBitmap(dealBitmap2);
imageView3.setImageBitmap(dealBitmap3);
Log.d(TAG, "7"); // 0.000s
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个是我使用bitmapRegionDecoder的代码
android 图片过长,【05-25求助】怎样无损加载一张过长的图片相关推荐
- Android 高清加载巨图方案 拒绝压缩图片
Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自: ...
- 高清加载巨图方案-拒绝压缩图片
Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自:[张 ...
- Android中关于Volley的使用(二)加载Json数据
前面一篇关于Volley的文章中,我们学习了如何利用ImageRequest去网络中加载图片,那么今天我们就来学习一下如何利用volley去网络中加载Json格式数据,并将其展示在一个ListView ...
- 【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 拷贝 DEX 文件到内置存储 | 加载并执行 DEX 字节码文件 )
文章目录 一.拷贝 Assets 目录下的 classes.dex 字节码文件到内置存储区 二.加载 DEX 文件并执行其中的方法 三.MainActivity 及执行结果 四.博客资源 一.拷贝 A ...
- 《android开发艺术探索》笔记之Bitmap的加载和Cache
<Android开发艺术探索>笔记之Bitmap的加载和Cache<一> 我放暑假前,就在图书馆借了一本<Android开发艺术探索>,这也是我看到很多人推荐的.之 ...
- Android 页面或文件或网络请求时的加载动画
//加载图片或页面或网络请求时出现加载动画 public Class LoadingAnimation{ private static LoadingAnimation loadingAnimatio ...
- Android一键生成包含.dex的Jar及动态加载方案
Android一键生成包含.dex的Jar及动态加载方案 背景:谈到动态加载相信很多小伙伴都会想到 热更新 及 动态加载dex 的技术,最近也因为项目重构的需求,折腾了下这方面的技术点,以前研究过但时 ...
- iOS原生如何加载HTML中img标签的图片
原文出自:iOS原生如何加载HTML中img标签的图片 前言 最近iOS App项目中使用Webview加载H5页面比较多,也有不少朋友经常问到这个问题,在这里我也学习学习如何通过iOS原生的方式来加 ...
- 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。...
a. 图片懒加载,滚动到相应位置才加载图片. b. 图片预加载,如果为幻灯片.相册等,将当前展示图片的前一张和后一张优先下载. c. 使用CSSsprite,SVGsprite,Iconfont.Ba ...
最新文章
- 计算机专业毕业生人数稳居前十,你该怎么脱颖而出?
- SQLSERVER存储过程基本语法
- Android 学习笔记--android——AsyncTask在Android4.X的机制问题
- SQL比oracle卡,对比Oracle与SQL Server
- [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)
- linux mysql移植_linux 下mysql 移植设置方法
- linux for循环
- JEECMS站群管理系统-- 标签的配置流程
- 详解Oracle数据货场中三种优化:分区、维度和物化视图
- html页面打开字都有蓝色背景,为什么有些网页打不开?网页空白页、白底蓝字问题怎么解决?...
- 如何删除360的防火墙模块(详解)
- window11在注册表修改用户名后登陆不了账户
- 【最简单】地图获取经纬度的办法
- 奥克兰大学计算机专业好找工作吗,留学选择奥克兰大学的计算机专业肯定不会后悔...
- 特斯拉充电电流设置多大_特斯拉满电状态517公里,实际使用500公里。三种充电方式比较...
- Spring| Spring中的动态代理配置(aspectj-autoproxy属性介绍)
- Linux之线程条件变量cond
- UML画图总结以及浅谈UNL九种图
- 抖店与淘宝有什么不同?
- 用Python写简历