android图形图像编程-第一章 基础概念和数据结构

本文介绍了Android图形图像编程的基础概念和数据结构,包括RGB、HSI和YUV三种颜色表示法,深入讲解了像素、位图、画布(Canvas)和Drawable的概念。其中,RGB在Android中广泛用于表示颜色,而画布是实现2D图形绘制的核心,Drawable则用于显示视觉元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章 基础概念和数据结构

1 基础概念和数据结构

1.1颜色表示

1.1.1 RGB 表示法

   RGB颜色表示法是一种基于三基色原理的色彩表示方法。所谓三基色原理是指绝大部分颜色都可以用R(红),G(绿),B(蓝)三种基本颜色按照一定的比例混合得到。目前的绝大部分电子设备都是采用RBG来表示颜色的。因此,Android系统中也是用RGB来表示颜色。

    根据每一中颜色表示的数据长度不同,Android中常用的RGB像素格式主要有:

   ARGB8888:用4个字节表示一种颜色。其中最高8位表示和背景色的混合系数。剩下三个字节分别表示一种颜色。所以一共可以表示:256x256x256种颜色。

   RGB888: 用三个自己表示一种颜色。和ARGB的区别仅在于没有透明系数。

   RGB565: 用两个自己表示一种颜色。一共可以表示32x64x32种颜色。

    在后文可以看到,当我们加载图像时,就需要指定图像的像素格式。

1.1.2 HSI 表示法

HSI色彩空间是一种比较符合人的视觉系统的感知彩色的方式,以色调、饱和度和强度三种基本特征量来感知颜色。

色调H(Hue):表示不同的颜色,如红色、绿色、蓝色等。它也可表示一定范围的颜色,如暖色、冷色等。

饱和度S(Saturation): 表示颜色的纯度。饱和度越大,颜色看起来就会越鲜艳,反之亦然。

强度I(Intensity): 对应成像亮度和图像灰度,是颜色的明亮程度。

  HSI 表示方法在数字图像处理软件中应用比较广泛。

1.1.3 YUV表示法

   YUV是一种广泛应用于电视,广播,视频领域的颜色表示方法。

其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

    在Android的多媒体模块中,视频解码器的输出格式就是YUV。

1.2像素

    像素是数字图像的最基本单位,一个像素对应着一个点。通常我们说一个手机的分辨率是1024x768,就是说在长轴方向有1024个像素,而在短轴方向上有768个像素。一个像素表示一个颜色值,在Android中主要使用RGB表示法。1.1.1节中描述了android中最常用的几种像素表示格式。

   Andorid系统为了便于开发者实现在不同设备上一致性较好的应用程序,定义了一些相关的基本概念并建议开发者在开发过程中使用,现简述如下:

    pixel:像素,是一个逻辑单位。一个像素可以认为就是一个点。

    dp/dip:物理长度单位。一个dp等于160分之一英寸。而一英寸等于2.54厘米。就是说1dp =0.00625 inch = 0.015875 cm。

    dpi:像素密度,是英文dotper inch的缩写,翻译过来就是一英寸多少个点。显然,越精细的屏幕,dpi就越高,显示效果就越好。

   dp 和 pixel 的换算关系为:

    px =dp * (dpi/160). 

    dp=(px*160)/dpi.

    ppi:像素密度,是英文pixelper inch的缩写,翻译过来就是一英寸多少像素。和dpi是一个含义。ppi常用于显示领域。

    屏幕尺寸:指屏幕的大小,通常说一个手机是4.3寸的,就是指屏幕尺寸为4.3英寸。注意,这个4.3指的是手机屏幕对角线的长度。家里的电视说多少寸的,和这个是一个原理,也是对角线的长度。

    分辨率:我们说一个手机的分辨率是854x480,首先是以像素作为单位的。也就是说这个手机的长边能显示854个点,短边能显示480个点。但是这个854x480的手机到底是几寸的,还要看屏幕显示密度,也就是dpi/ppi。分辨率和显示密度共同决定了手机的屏幕尺寸。

1.3 位图

    计算机上表示图像的方法主要有两种:位图(又称点阵图,光栅图)和矢量图。

    矢量图指用一系列的线段和曲线描述的图像。常见的矢量图格式有Adobe Illustrator*.AI*.EPSSVGAutoCAD*.dwgdxfCorel DRAW*.cdrwindows标准图元文件*.wmf和增强型图元文件*.emf等等。矢量图的优点是缩放无质量损失,存储空间小,便于转换成位图等优点。

    位图是用大量的点阵来描述图像。每个点表示一种颜色,称为一个像素。常见的位图格式有:*.bmp*.pcx*.gif*.jpg*.tif*.pcd*.psd*.cptAndroid系统中目前主要使用位图进行各种显示。

1.4 画布(Canvas)

    顾名思义,画布就是作画的地方。Android中的3D图形引擎是通过OpenGLES实现的。而2D图形引擎就是通过Canvas封装的一系列的接口实现的。

    画布实现的基本功能有:基本图形的绘制,如:直线,曲线,点等等,位图的显示,画布剪裁,画布的几何变换,用来实现移动,缩放,旋转等功能。

    要在Android系统中使用画布作画,需要具备四个基本要素:

   (1) 一个位图,用来最终保存在画布上绘制的内容。

    (2)一张画布,用来进行绘制操作。

    (3)基本绘制元素,就是想要往画布上绘制的内容。

   (4)画笔,用来定义绘制图形的颜色,线型等基本内容。

    画布对应了android.graphics包中的Canvas类。

1.5 Drawable

   drawable 是android系统中被定义为仅用于显示的视觉元素。通常用于控件的背景图片或者作为图标。通常在XML文件中定义。

   drawabled对应了android.graphics中的Drawable类。Drawable有很多子类分别实现不同的显示功能,后文会详细描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值