求单色位图,16色位图,24色位图和256色位图之间的区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求单色位图,16色位图,24色位图和256色位图之间的区别?相关的知识,希望对你有一定的参考价值。
参考技术A四者之间的区别是:
1、颜色种类不同
单色位图:黑白色。
16色位图:彩色。
24色位图:彩色。
256色位图:彩色。
2、颜色数量不同
单色位图:由2种颜色构成。
16色位图:由16种颜色构成。
24色位图:由24种颜色构成。
256色位图:由256种颜色构成。
3、色彩深度不同
单色位图:单位。
16色位图:4位。
24色位图:真彩色。
256色位图:8位。
色彩深度又叫色彩位数,即位图中要用多少个二进制位来表示每个点的颜色,是分辨率的一个重要指标。常用有1位(单色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增强色),24位和32位(真彩色)等。
扩展资料
色彩深度
位图常用的一种压缩方法。从位图图片中选择最有代表性的若干种颜色(通常不超过256种)编制成颜色表,然后将图片中原有颜色用颜色表的索引来表示。
这样原图片可以被大幅度有损压缩。适合于压缩网页图形等颜色数较少的图形,不适合压缩照片等色彩丰富的图形。
在原有的图片编码方法基础上,增加像素的透明度信息。图形处理中,通常把RGB三种颜色信息称为红通道、绿通道和蓝通道,相应的把透明度称为Alpha通道。
多数使用颜色表的位图格式都支持Alpha通道。
色深8位及以上的位图还可以根据其中分别表示RGB三原色或CMYK四原色(有的还包括Alpha通道)的位数进一步分类,如16位位图图片还可分为R5G6B5,R5G5B5X1(有1位不携带信息),R5G5B5A1,R4G4B4A4等。
参考资料来源:百度百科_位图
计算机图形
1.计算机图形的表示方式:
在计算机中,图片是采用位图形式来实现的
单色位图(bmp):(白色)200*200=4万个像素点,8个字节是一byte,大概有5000byte,因为图片的头信息,和事件什么的都保存在图片里,实际图片大小为5.多kb(黑白,1个byte可以表示8个像素点0表示黑色,1表示白色)
256色位图,每一个像素点都有256中颜色,(256个组合不是256位,需要2的8次方个组合需要8位表示)2的8次方,故一个像素占8位,即一个字节.
计算计算机图片的大小:宽*高*(位图)位数/8
注意①Android中默认的位图属性位ARGB_8888,是32位位图,一个像素占用4个字节,在工作中我们需要使用RGB_565,是16位位图,一个像素占用2个字节
注意②矢量图到Android5.0之后才支持,所以开发中一般使用的是位图
|--位图:会随着图片的放大缩小,像素失真,内存占用大
|--矢量图:放大缩小不会失真,内存占用小
多媒体是多种媒体的继承,主要包括文本,音频,视频,动画...
二:加载图片到内存
BitmapFactory.decodeFile("mnt/sdcard/big.jpg");
//安卓下默认32位位图,argb各占一个byte,故是32位位图
加载大图异常:OOM(out of memory)1.69M(一个像素要4个byte表示,实际大小是宽高*4)的图片要申请15.6M的内存而android中一个应用程序最大16M内存
三:加载大图
method1
1.创建一个现象条件Option option = new O
2.设置采样率option.inSampleSize=4宽高分别为原来的1/4
method2
得到图片的宽高信息1
ExifInterface exif = new ExifInterface(Environment.getExternalStorageDirectory()+"/big.jpg");
//获取图片的宽高,只能用于jpg图片的宽高(头文件信息,)
int width = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0);获得宽
int height = exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0);获得高
//图片宽高获取2
Options opts= new Options();//创建选项条件
opts.isJUstDecodeBounds=true;//只读取图片的头文件信息,不会加载到内存
//加载图片之前:opts.isJUstDecodeBounds=false;再将图片加载到内存,可以保证不管是什么图片都可以获取图片的宽高,计算出缩放比例
opts.outWidth;
opts.outHeight;//处理前宽高
//获取屏幕的宽高
get systemService(Window_Service);返回对象WindowManger wm
wm.getDefaultDisplay().getWidth();//获取屏幕的宽,高同样
wm.getDefaultDisplay().getHeight();//获取屏幕的宽,高同样
创建一个现象条件Option option = new Option();
设置采样率option.inSampleSize=4宽高分别为原来的1/4(图片缩放的唯一标准跟据屏幕宽高和图片宽高设置采样比)//默认1,,,,4-8之间以4为准.只能2的n次方
BitmapFactory.decodeFile(图片路径,option);//造成OOM的关键步骤
bitmap.getWidth();
bitmap.getHeight();获得缩放后,图片的宽高
method2,获取屏幕的宽高
**通过上下文拿到
getresource().getDisplayMetrics();
,widthPixels;
.heightPiels;
//计算缩放比例
图片宽度/屏幕宽度>图片高度/屏幕高度?,选择大的
四:图片的处理
用代码编辑图片,最好处理的是图片在内存库中的拷贝,不去处理原图
//原图
Bitmap srcBitmap = BitmapFactory.decodeFile(mnt/.jpg)
iv_src.setImageBitmap(srcBitmap);
//拷贝原图
//创建一个和原图一样大小的空白画布
Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(),srcBitmap.getConfig());//创建画板
Canvas canvas = new Canvas(copyBitmap);
//创建画笔
Paint paint = new Paint();
paint.setColor();
Matrix matrix = new Matrix();
以上是关于求单色位图,16色位图,24色位图和256色位图之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章