图片占用内存和设置图片的模式(即每个设置每个像素占几个字节)还有压缩图片(小集合)
来源:互联网 发布:s5700 telnet 默认端口 编辑:程序博客网 时间:2024/06/05 16:32
(1)图片占用内存的计算方式:
一张522*686的PNG 图片,我把它放到 drawable-xxhdpi 目录下,在三星s6上加载,占用内存2547360B,其中 density 对应 xxhdpi 为480,targetDensity 对应三星s6的密度为640:
522/480 * 640 * 686/480 *640 * 4 = 2546432B
(2)设置图片的图片模式:下面设置为每个像素占两个字节,为无透明的模式。
BitmapFactory.Options options = new BitmapFactory.Options();options.inPreferredConfig = Bitmap.Config.RGB_565;a.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.a,options));
(3)改变Bitmap的大小
Bitmap.createScaledBitmap(Bitmap,width,height,true);
(4)改变Bitmap 的颜色属性:
Bitmap b = response.copy(Bitmap.Config.RGB_565,false);
response是Bitmap对象,注意此方法会重新创建一个新的Bitmap对象,如果前者不需要了,要做好清空操作。
(5)压缩图片:
package com.example.administrator.myapplication;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
ImageView mImageView;
Bitmap bitMap;
static String str;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
mImageView = (ImageView) findViewById(R.id.imageView2);
try {
bitMap = decodeSampledBitmapFromResource(getResources(), R.drawable.android1, 200, 310);
} catch (Exception e) {
}
mImageView.setImageBitmap(bitMap);
}
public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int MyWidth, int MyHeight) throws Exception {
final BitmapFactory.Options options = new BitmapFactory.Options();
/**被赋值为true返回的Bitmap为null,虽然Bitmap是null了,但是BitmapFactory.Options的outWidth、
*outHeight和outMimeType属性都会被赋值。这个技巧让我们可以在加载图片之前就获取到图片的长宽值和MIME类型,从而根据情况对图片进行压缩
*/
options.inJustDecodeBounds = true;
str = options.outMimeType;
BitmapFactory.decodeResource(res, resId, options);
//得到压缩倍数。
options.inSampleSize = calculateInSampleSize(options, MyWidth, MyHeight);
//设置为false,就能得到Bitmap.
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) throws Exception {
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
inSampleSize = heightRatio < widthRatio ? widthRatio : heightRatio;
}
return inSampleSize;
}
}
- 图片占用内存和设置图片的模式(即每个设置每个像素占几个字节)还有压缩图片(小集合)
- Android不同的图片模式,每个像素占用的字节大小
- Photoshop 查看图片分辨率&查看每个像素的颜色&标尺
- 读取图片并显示每个像素处的RGB值
- GDI+ 读取jpg图片每个像素的值
- 图片处理工具小集合
- 1.6 给出一张图片,表示为NXN的居然,每个像素点为4字节。写一个函数实现将这张图片旋转90°。
- html插入图片并设置图片像素
- html插入图片并设置图片像素
- GDI+学习记录之获得图片每个像素
- iOS 遍历图片每个像素点并修改rgb值
- 图片的占用内存压缩处理和传送流量压缩处理
- Object-C图片压缩--像素压缩和非像素压缩
- 图片按像素压缩
- 获取图片每个像素点的RGB并计算灰度值
- GDI+ 读取(jpg,PNG,BMP)等格式)图片每个像素的值
- 图片占用内存的计算
- 图片内存溢出和图片压缩
- CopyOnWrite分析
- strom架构和构建Topology
- Java进阶(三十六)深入理解Java的接口和抽象类
- Ubuntu Linaro
- 基于SQLite3轻量级封装,一行代码实现增删改查
- 图片占用内存和设置图片的模式(即每个设置每个像素占几个字节)还有压缩图片(小集合)
- 虚拟函数使得父类指针可以调用派生类的同名函数
- 在WinForms中使用MD皮肤
- HDU 3047 Zjnu Stadium [并查集]
- 抛弃Visio,遇上效率作图工具Edraw亿图图示
- 设计模式之工厂模式代码示例
- ios 图片下载并保存到本地
- 【POJ】-1995-Raising Modulo Numbers(快速幂,同余定理)
- android学习笔记之屏幕间的跳转