"点九"图片

“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png

智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。

我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真。

OK,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果。

【普通拉伸和点九拉伸效果对比】


对比很明显,使用点九后,仍能保留图像的渐变质感,和圆角的精细度。

从 中我们也可以理解为什么叫“点九PNG”,其实相当于把一张png图分成了9个部分(九宫格),分别为4个角,4条边,以及一个中间区域,4个角是不做拉 升的,所以还能一直保持圆角的清晰状态,而2条水 平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样

二.“点九”的制作方法

方法1:使用 “draw9patch”工具绘制,流程如下

1.  安装工具

首先你需要给自己的电脑安装上java于系统的默认目录下。没有安装java的同学可以在百度搜索:jdk-6u20-windows-i586,安装包大小80M左右。

然后使用andriod模拟器—android-sdk-windows,打开SDK/tools目录下的“draw9patch.bat”文件,出现载入窗口:

2.导入并编辑

将png图片拖拽到该窗口中

如下图,自动进入编辑界面。图中介绍了每个区域的内容及功能注释。

预览右侧的视图发现,图片的边缘处于普通拉伸状态。

现在我们在图片边缘点击左键,绘制出黑线,即图片需要被拉伸的部分。如下图,对4条黑线做了注释。

如果失误多绘的部分,可按住shift键的同时点击鼠标左键擦除)。

如图所见,三种拉伸结果均已完美显示,已实现我们想要的拉伸效果,假设这是一个有显示文字的窗体,那么文字显示的区域,程序也会控制在黑线对应范围。

以下这些图片,包括异性(非规则图形)图片,也可以通过点九PNG实现横纵向的自然拉伸。


【draw9patch.bat其他功能说明】

②   Show lock:显示不可绘区域

② Show patches:预览这个绘图区中的可延伸宫格(粉红色代表一个可延伸区域)

③ Show patches:预览视图中的高亮区域(紫色区域)

④ Show bad patches:在宫格区域四周增加一个红色边界,这可能会在图像被延伸时产生人工痕迹。如果你消除所有的坏宫格,延伸视图的视觉一致性将得到维护。

3.保存和输出

点击左上file- save,保存文件,自动生成一张后缀名为“*.9.png”格式的图片,图片上下左右各增加了1px的黑线。

方法2:直接使用 PS等平面工具绘制,流程图如下

如流程图所示,相对与方法1,只需2个步骤就可得到.9.png图片,具体步骤为:

1.  确定切图后直接改变图片的画布大小,

2.  手动将上下左右各增加1px

3.  使用铅笔工具,手动绘制拉伸区域,色值必须为黑色(#000000)。

4.  存储为web所用格式,选择png-24,储存时手动将后缀名改为.9.png

不过这种方法的缺点是不能实时预览,判断并测试拉伸区域的准确性。

使用此方法需要注意以下2点:

1. 手绘的黑线拉伸区必须是#000000,透明度100%,并且图像四边不能出现半透明像素;

2. 你的.9.png必须绘有拉伸区域的黑线;

否则,图片不会通过android系统编译,导致程序报错。还有,有同学疑惑解压缩apk文件后,.9.png图片里的黑线怎么没了?

那是因为andriod程序在把文件打包成apk的时候,程序会自动把*.9.png图片边缘的黑线去掉,所以解压缩apk后看到的.9.png文件是没有黑线的。

三.使用“点九”的意义

关于下图,经过测试发现使用普通png的显示效果出现明显的变色横纹。而.9.png图片的显示效果明显优于普通png。

使用.9.png格式后,横纹问题基本已解决。因为对于.9.png图片,android系统程序有对其优化的算法。

由于android手机屏幕的材质质量差距大。很多屏幕不支持16位以上的颜色显示。

所以渲染后结果出现丢失颜色,故造成横纹显示。

经与多款android手机对比后发现,屏幕越次的手机横纹越明显。

而使用了*.9.png图片技术后,只需要采用一套界面切图去适配不同的分辨率,而且大幅减少安装包的大小。而且这样程序不需要专门做处理的就可以实现其拉伸,也减少了代码量和开发工作量。

相信每个人android平台的切图工作,会有不同的技巧和心得,非常欢迎大家能在评论中留下自己的个人经验及心得。相互交流会让我们的工作模式更灵活,更高效,同时带给大家更多优质的移动端应用:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 标定是指在使用OpenCV进行相机标定时,利用9个空间中的物体特征来确定相机的内部参数和外部参数。这种标定方法通常用于较简单的相机标定任务。 在进行标定时,我们需要准备一个特殊的标定板。这个标定板上包含9个黑白交替的棋盘格,每个棋盘格有相等大小的方格。我们需要把这个标定板放在不同的位置和角度,并从不同的角度拍摄多张照片。 接下来我们可以利用OpenCV中的函数来进行标定。首先,我们需要使用findChessboardCorners函数来检测每张图片中标定板的角。然后,我们可以使用函数calibrateCamera来计算相机的内部参数和外部参数。这个函数会自动处理图片中的角,并通过最小二乘法来拟合相机的参数。 标定完成后,我们可以使用得到的相机参数来进行视角转换、图像校正等操作。此外,标定还可以用于测量物体的几何尺寸,例如物体的宽度、高度等。 总之,通过标定,我们可以利用OpenCV快速、准确地获取相机的内部参数和外部参数,从而为后续的图像处理和计算机视觉任务提供准备。 ### 回答2: 标定是指通过采集相机在多个已知的三维空间上拍摄的图像,来计算相机的内部参数和外部参数。在OpenCV中,可以使用 `cv::calibrateCamera()` 函数来进行标定。 标定的基本原理是,通过在不同的位置和角度上拍摄包含多个已知三维的图像,然后利用已知的三维和相应的图像,通过最小二乘法来计算相机的内部参数(焦距、主坐标等)和外部参数(相机的旋转矩阵和平移向量)。 在OpenCV中进行标定的步骤如下: 1. 准备多个已知的三维空间和对应的图像坐标。 2. 定义一个相机矩阵(内部参数矩阵)及畸变系数矩阵。 3. 调用 `cv::calibrateCamera()` 函数,将三维和图像传入函数中,同时提供初始的相机矩阵和畸变系数矩阵。 4. 该函数会返回计算得到的内部参数和外部参数,并存储在相机矩阵和畸变系数矩阵中。 5. 可以使用这些参数进行相机矫正和三维重建等工作标定可以用于相机校准和计算相机的几何参数,如焦距和畸变等。这对于计算机视觉应用中的摄像头定位、姿态估计等任务非常重要。在OpenCV中提供了方便的函数和工具,使得标定变得较为便捷。通过准备好的已知三维和图像,结合相机准确的内外参数,可以提高图像处理的精度和准确性。 ### 回答3: OpenCV标定是指在使用相机进行校准时,采用个不同位置的来准确地确定摄像机的内部参数和外部参数。 首先,要进行标定,我们需要选取至少个不同位置的目标。这些目标应分布在整个图像上,包括左上、中上、右上、左中、中心、右中、左下、中下和右下。这样的布局可以提供更好的标定结果。 其次,我们需要对这些目标在图像上的坐标进行测量。这可以通过在图像中标出目标并使用图像处理算法来实现。一旦我们获得了目标的图像坐标,我们可以将其与实际世界坐标进行对应。 接下来,我们可以使用OpenCV提供的相机标定函数来计算摄像机内部和外部参数。这些参数包括焦距、主坐标、畸变系数和旋转矩阵等。通过使用这些参数,我们可以对图像进行矫正,以消除图像中的畸变。 最后,通过使用标定结果,我们可以准确地测量和估计图像中的线段长度、面积和角度等尺度信息。这些尺度信息对于计算机视觉应用和机器人导航等领域非常重要,可以提高其准确性和可靠性。 总之,OpenCV标定是一种准确测量和校准相机的方法,可以提供摄像机的内部和外部参数信息,从而提高计算机视觉应用的质量和精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值