# 概述 图片格式概述: BMP:高质量绘图 保证原图质量,用于相机等 BMP格式图片是有一个一个的像素点组成,每一个像素都是一个颜色.而每一个像素显示的颜色用的二进制位也不相同,这个像素位称之为位深,位深越大,表示每一个像素点所用的二进制位越多,显示的图像也就越清晰。 png:较高质量绘图 体积小,适用于网络传输 png图片是将bmp图片进行压缩,其压缩格式类似于rar压缩——将相同的byte信息合并表示。png图片可以还原,是无损的压缩方式。 jpg:良好的绘图质量 体积小,便于传输 jpg格式图片也是对bmp图片进行压缩,因为眼睛的精度是有限的,jpg利用这一点将很多颜色相近的用同一颜色标识,而对于一大块相同的颜色,则用一个值表示。jpg格式图片不能被还原。
## 加载大图 <div class="top-box hide"> <div class="alert-info"> </div> </div> ``` hr && wr>1){ r = wr; } if(hr>wr && hr>1){ r = hr; } //压缩图片 options.inSampleSize = r;//设置压缩比 options.inJustDecodeBounds = false;//设置加载图片内容 Bitmap bm = BitmapFactory.decodeFile(path,options); iv.setImageBitmap(bm); " data-snippet-id=“ext.f5fc8efb9581248b791731039403eb80” data-snippet-saved=“false” data-codota-status=“done”>`ImageView iv = (ImageView) findViewById(R.id.iv); <span class=“hljs-comment”>/**
在Android中,每一个应用程序所占用的内存空间大小都会有一个固定的大小限制 假设此处加载的图片是2560*1440像素,图片位深是24的jpg格式图像 虽然此图占用的磁盘空间是1.3M,但图片在加载到内存中时,实际上会先转换成位图图像 那么这张图片加载到内存中的大小就是2560144032(位深24,windows系统中,使用24位字节表示一个颜色值:#000000, 但在Android中,每一个颜色值是用32位字节表示一个颜色值:#00000000),因此,这张图片加载到内存中所需要占用的内存 大小约为:14M,因此,占用内存是极大的.若是直接将图片加载到内存中,容易造成内存溢出 解决方案:按比例压缩图片 *按比例压缩图片首先就是要获取图片的大小 */</span> String path = <span class=“hljs-string”>“mnt/sdcard/1.jpg”</span>; <span class=“hljs-comment”>//用于设置图片渲染器参数</span> BitmapFactory.Options options = <span class=“hljs-keyword”>new</span> Options(); <span class=“hljs-comment”>//设置图片加载属性:不加载图片内容,只获取图片信息</span> options.inJustDecodeBounds = <span class=“hljs-literal”>true</span>; <span class=“hljs-comment”>//加载图片信息</span> BitmapFactory.decodeFile(path,options); <span class=“hljs-comment”>//获取图片宽高</span> <span class=“hljs-keyword”>int</span> picwidth = options.outWidth; <span class=“hljs-keyword”>int</span> picheight = options.outHeight; <span class=“hljs-comment”>//获取屏幕大小</span> <span class=“hljs-comment”>//获取窗口管理器</span> WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
<span class=“hljs-comment”>//获取默认显示设备</span> Display dis =wm.getDefaultDisplay(); <span class=“hljs-comment”>//获取屏幕宽高</span> <span class=“hljs-comment”>//dis.getSize(outSize);此方法适用于新版本Android系统</span> <span class=“hljs-keyword”>int</span> diswidth = dis.getWidth(); <span class=“hljs-keyword”>int</span> disheight = dis.getHeight(); <span class=“hljs-comment”>//计算压缩比</span> <span class=“hljs-keyword”>int</span> wr = picwidth/diswidth; <span class=“hljs-keyword”>int</span> hr = picheight/disheight; <span class=“hljs-keyword”>int</span> r = <span class=“hljs-number”>1</span>; <span class=“hljs-keyword”>if</span>(wr>hr && wr><span class=“hljs-number”>1</span>){ r = wr; } <span class=“hljs-keyword”>if</span>(hr>wr && hr><span class=“hljs-number”>1</span>){ r = hr; } <span class=“hljs-comment”>//压缩图片</span> options.inSampleSize = r;<span class=“hljs-comment”>//设置压缩比</span> options.inJustDecodeBounds = <span class=“hljs-literal”>false</span>;<span class=“hljs-comment”>//设置加载图片内容</span> Bitmap bm = BitmapFactory.decodeFile(path,options); iv.setImageBitmap(bm); `
...