《9.PNG图片处理方法》由会员分享,可在线阅读,更多相关《9.PNG图片处理方法(10页珍藏版)》请在金锄头文库上搜索。
1、大家好,这教程本来打算上次发 M9 的皮肤的时候就发的。后来在反编译的时候出了问题,不得不搁浅了。胎死腹中啊。这次重新找了一个工具,终于解决了 9.png 的图片的问题。说说本人的近况:手机终于拿回来了。苍天啊内牛满面当中。最近新学到了许多东西,美化又有了新进展介绍一下这次教程的情况:以前的那几集教程只能算是基本的替换图片吧,懂点 IT 知识的人应该都会。这次就比较繁琐了,涉及到了编译,反编译,SDK 的安装,9.png 的修改。挺麻烦的。主要是工作量大,替换图片的话只要复制加粘贴就 OK 了,但是要涉及到分辨率的修改可不是那么简单了。想详细了解如何定制 UI 的话就接着往下看吧!这次更新的教
2、程比较繁琐,有以下几点要求:1.要会反编译。 【反编译用的工具是 apktool,大家可以论坛搜索一下,到处都是教程的】2.电脑上得装有 android SDK。 【其实只要 SDK 目录下 tools 中的 draw9patch 工具,处理 nine-patch 图片的时候必须的。不想装 SDK 的同学百度一下 draw9patch 应该有的下载的。 】3.还需要足够的耐心。 【机械般的重复动作比较多】如果以上三个要求不具备的话,我想这教程应该就可以不用学了,当知识了解一下就好了。这次更新的教程适合有一点基础的童鞋(就是能熟练替换普通情况下的图片的水准的童鞋,如果连普通的替换都不会,建议先看
3、我的教程的前三集) 。这次写的是修改不同分辨率图片替换的教程。大家可以先把 framework-res.apk 反编译过来,然后定位到 resdrawable-mdpi 这个文件夹看看。打开之后你是不是发现里面的图片和以往图片有所不同呢?没错,反编译之后的图片也和 xml 一样现出原形了,一些需要拉伸的图片四周都多了一个像素的边框,带了一条黑线。这就是 android UI 独特的图片格式*.9.png。它独特在哪呢?就是因为他有拉伸的特性。比如普通的一个短信输入框,你发现他横屏和竖屏的情况下分辨率绝对是不同的,但是我可以很负责任的告诉你,两个框的图片却是同一张。但它却没有出现拉伸错误的现象,
4、这就是*.9.png 的威力了。具体理解可以看看下面图一为 nine-patch 图片拉伸的原理图,原始的 nine-patch 图片是在四个方向都有黑条的,黑条的宽度为一个像素,颜色为纯黑(RGB=000000) 。编译后,黑条自动消失。上方和左方的黑条分别是横向和纵向的拉伸区域(用灰色强调了) ,如要横向拉升图片,将只会拉伸灰色区域。反之,如果只是普通图片,拉伸将会出现严重的失真(如图二) 。而下方和右方则分别表示内容的显示区域(也可以没有这两个内容区域横条,不影响一般使用效果) 。图一图二下图就是 android 的 SDK 里面的 nine-patch 处理工具示意。看了图片相信你就明
5、白了,为什么自己用普通图形处理软件处理的图片放到手机上面的时候会拉伸不正常,导致修改失败。那是因为你没有经过特殊处理,直接用*.png 格式的图片,当然会拉伸不正常。好了,情况描述完毕了,我们进入教程。如何将普通的*.png 格式图片改成*.9.png 格式?步骤一:提取样本和素材先将一个有着官方 UI 的 framework-res.apk 反编译,得到反编译的文件。将 res/drawable-mdpi 提取出来。将这个文件夹改成【样本】当然你也可以改成自己的,我选择改成样本是因为自己看着方便,下面的文件夹也一样,随便改,自己看着方便就行。接着将你要处理的有定制 UI 的 framewor
6、k-res.apk 也反编译,同样,将 res/drawable-mdpi(不一定是这个文件夹,也有可能是其他文件夹,都在隔壁,打开看看就知道了)复制出来,将这个文件夹改成【素材】 。这个我建议,大家把普通的 png 图片和 9.png 图片分开放。这样方便修改些。这是我连续处理了将近 4000 个图标出来的经验全是自己手动一个个修改【含泪当中】我就是将这些文件分别放入了【png 素材】 【9.png 素材】 【png 样本】 【9.png 样本】这些文件再你处理好了之后就无用了。咱们只要成品。文件准备好,打开图像处理软件。这里我推荐使用【Paint.NET】 。为什么?因为 PS 有些图片处
7、理不了。看看下面的图大家就知道了。相同图片打开之后却是两个结果,要问我是什么原因,我也不知道,我也给这个问题困扰过好久,后来还是在黑人的推荐下用了 Paint.NET,才解决了这个问题。好了,咱们接着讲这里我以一个下拉的 nine-patch 格式的图标为例,给大家讲解。普通的 png 就不详细讲了。这都不会就不要往下看了哈。首先打开要处理的图片。打开之后需要修改分辨率。按 Ctrl+R 弹出对话框。这个时候就可以修改分辨率了。现在就用的到刚刚提取出来的官方 UI 的样本文件夹了。打开【样本】 。找到这个相应的图片。选中它,在屏幕的左下角你能看到这张图片的一些信息,我们要的分辨率就在下面。看图
8、:接着我们就可以将样本中的图片的分辨率输入到 NET 上面,将大分辨率的图片修改成一样的了。虽然通过修改分辨率之后的图片的格式还是*.9.png,而且缩略图上面也显示还有四周的黑线在。不要以为那张图片还是原来的,实际上里面的黑框已经不在了,需要重新给它弄上去。可以用 SDK 里面处理图形的工具打开看一看,你会发现里面的拉伸效果实际上已经没有了,我们要自己重新处理过。上面教大家将分辨率修改好了,下面咱们说说如何处理*.9.png。这才是重头戏。首先,打开 android SDK 下的 tools 中的 draw9patch.bat。 【关于 SDK 的安装百度一下,很多教程的。论坛也有,搜索一下
9、即可】这个就是*.9.png 要用到的处理工具。现在样本又派上用场了,修改*.9.png 同样需要一个样本来和素材对照。除非你对这个图片已经了然于胸了,不然我劝你还是用我这个笨办法,虽然办法笨,但胜在稳。这个工具需要打开两个,一个是放样本的,一个是处理图片用的。具体方法:打开两个 Draw 9-patch你可以将样本放入第一个 Draw 9-patch 当中,直接拖动到软件里面即可。然后将素材放入第二个 Draw 9-patch 中。这个我建议是将两个窗口都最大化方便等会修改。这个时候如果你切换一下两个窗口,你就明白我的意思了。两个窗口互相切换你会发现有一个图片四周有黑条,一个没有。我们要做的
10、就是将素材按照样本那样涂上一样的黑条。看图:大家看到了,这两个图片一个周围有黑条,一个没有,我们要做的就是把没有的那个也画上去。提供一个简单的方法,让你方便修改。按 Ait+Tab 键可以互相切换,你先把鼠标固定在样本的黑条上面不动,然后切换到素材上面,这个时候素材的这个位置就是你要涂黑的地方。比如我要涂黑一个长条,我先切换到样本,将鼠标放到样本黑条的首位,定住不动,然后切换到素材上面,点下鼠标,黑条的首位就确定好了。然后用相同的方法把尾位也确定下来,两点确定一条直线嘛。中间连续一拉,一条黑线就解决了。这绝对是一个笨办法。但同样也绝对是一个有效的办法。其他普通的*.png 格式的图标不需要这样
11、处理,直接修改好分辨率就能用了。所有 9.png 的图片处理好后咱们需要另外一个工具将它打包,新发现了一个工具【Ultimate-d9pc 】 。此乃大神器也。移植皮肤必备的。下面我们来看看他的使用方法先下载附件解压,如果杀软弹出提示,关了杀软。不放心的下载个沙盘,放里面运行。我以我的人格保证,这绝对是个安全软件。我自己就用两台电脑都试过。没问题。会出现以下文件解释一下,文件夹里面都是放 9.png 的图片的。后面那个 exe 是处理图片用的。将刚刚咱们修改好的 9.png 图片全部选中,放到 这个目录里面。然后双击 xUltimate-d9pc.exe。接着就会弹出一个命令运行窗口。然后出来
12、几行提示就会消失。电脑主机会“滴”的响一声蜂鸣。正常现象。接着就会生成一个文件夹,里面就是已经打包好的 9.png 图片。黑框已经没了。这些图片就可以直接用了,如果不经过这一步的处理。图片是无法直接使用的。放到 apktool 里面打包也不行。我原来就是想用 apktool 打包回去,后来发现很多错误。无奈只能放弃,后来发现了这个神器才有了解决之法。好了,重中之重的图片处理完了,接着将普通 png 和打包好的 9.png 放在一起。这就是整个框架里面的 UI 了。将这些文件直接替换到你的 framework-res.apk 里面【具体方法参照我教程前三集】现在这些图片才可以直接用,如果不经过上面的处理,只是修改分辨率的话肯定会挂的。这样咱们的 UI 移植就完成了。Apktool 反编译出来的文件也可删除掉了。那些文件只是起一个参照样本的作用。其他没什么用的。童鞋们,上面的教程你们看懂了嘛。如果懂了,恭喜你你已经学会如何自己定制UI 了,这就是 UI 的定制过程了。不懂的话再潜水充电吧。