`

PngMate使用教程2(转)

阅读更多
下面我们来换一张图片,街头霸王Ken,这张gif的帧数比较多,默认输出排成一行看着费劲,那么可以用align命令来指定一行的帧数,指示PngMate输出成多行:

pngmate ken.gif ken.png -align 6

ken.gif

ken.png



ken.gif直接转成的ken.png体积比较大,而且我们实际做游戏根本用不到这么大的角色,那么可以用resize来改变帧的大小,我们在下面的例子里高度指定为0,意思是根据给定的宽和原图的比例自动运算出新图片的高:

pngmate ken.gif ken1.png -resize 64x0 -align 6

ken1.png


JAVA手机网[www.cnjm.net]

JAVA手机网[www.cnjm.net]
可是这样生成的png还是有点大,我们可以用frameskip来跳过一部分帧,这样动作虽然不如原来流畅,但是图片体积也相应大大减小了:

pngmate ken.gif ken2.png -resize 64x0 -frameskip 1

ken2.png



好,小了将近一半了,再想缩小图片,可以采用减少图片使用的颜色数的办法,一般来说,使用的颜色越少,图片体积越小,当然相应的图像质量也会下降,不过我们完全可以多试几次,在图片体积和图像质量中达到一个最佳平衡点:

pngmate ken.gif ken3.png -resize 64x0 -frameskip 1 -colors 40

ken3.png
JAVA手机网[www.cnjm.net]



怎么样,虽说图像质量稍有下降,但看上去并没有比ken2.png差太多,不过体积可又减小了将近一半!

做完了这些工作,是不是很想看看现在的缩小版Ken动画的实际效果?再转回动画gif当然是最直接的办法,不用求助美工,pngmate一样帮你搞定!采用split命令可以把输入的图片切分成多帧,而我们的ken3.png只有一行,这一行上水平排列了6帧,所以应该切分成6列 x 1行,因此用下面的命令行:
JAVA手机网[www.cnjm.net]

pngmate ken3.png ken1.gif -split 6x1

ken1.gif



还不错吧?不过看上去比原来的动作慢了一点,这是因为没有指定gif的帧间延迟,所以PngMate采用了默认值200毫秒(每秒5帧),对我们的动画来说确实慢了一些,没关系,可以用delay命令来指定输出gif的帧间延迟:

pngmate ken3.png ken2.gif -split 6x1 -delay 150

ken2.gif



怎么样,是不是感觉好多了?

我们刚才处理的小男孩图片现在也来看看动态效果,但是想起来没有,我们刚才删除了其中一个重复帧,这样如果直接生成gif的话,动作就不连贯了,怎么办呢?别急,pngmate还提供了帧序列处理命令select,可以用它来选择部分帧,而且帧序号可以重复哟,所以只要用下面的命令就可以做到:

pngmate boy4.png -split 3x1 boy1.gif -delay 150 -select 0,1,0,2

JAVA手机网[www.cnjm.net]
boy1.gif
JAVA手机网[www.cnjm.net]



大家可以从上面的例子里看到,pngmate对参数的顺序要求是很宽松的,可以像前面的例子一样,把命令可以写在输入、输出文件的后面,也可以写在它们的前面甚至中间。但是crop和resize命令如果组合使用,那么处理的顺序就是命令行中它们出现的的先后顺序。同样,对于frameskip, select, delete这三个帧序列处理命令,它们如果同时出现,那么也是按照在命令行中出现的先后顺序来依次执行。好像有点复杂,不过话说回来,在绝大多数场合下,没有必要组合使用这些命令。

当我们要使用select命令或者delete命令来操作帧序列的时候,遇到帧比较多的情况,挨个数帧编号也是挺麻烦的一件事情,因此pngmate特别提供了在图片上加注数字编号的功能,你可以用这个功能生成一张参考图片来方便工作:

pngmate ken.gif ken4.png -numbered -align 6

ken4.png



PngMate的命令差不多都给大家介绍完了,下面我们来实战一个稍微复杂点的例子,从一张包含了所有帧的png图片生成小男孩向各个方向走的连续动画:

pngmate boyall.png -split 3x4 -select 0,1,0,2,0,1,0,2,6,7,6,8,6,7,6,8,3,4,3,5,3,4,3,5,9,10,9,11,9,10,9,11 boyall.gif -delay 150 -crop greedy

boyall.png

boyall.gif

JAVA手机网[www.cnjm.net]


这命令行看上去有些复杂,不过其实就是那个select命令稍微长了一点,它依次指定了所有动画帧,其它的命令都是老朋友了,只不过这次组合起来一起用而已。

如果我有大量的图像文件想使用PngMate批量处理怎么办呢?虽然PngMate本身不支持批量处理文件,但你可以使用批处理文件(.bat文件)或者dos命令"for"来轻松的实现批处理功能。对于很多简单的处理,for命令就能搞定。严格说来,这已经不是本教程讨论的范畴,不过大家可能对for命令不太熟悉,我可以抛砖引玉介绍一二。

for命令的基本格式是for %变量 in (范围) do ...
do后面可以使用任何命令行命令,且中间可以使用前面的变量,比如在下面的例子中,我们将为当前目录下每张jpg图片生成一张64x64,60色的png预览图,文件名为原来的文件名去掉.jpg扩展名后再加上.png扩展名,那么:

JAVA手机网[www.cnjm.net]
for %I in (*.jpg) do @pngmate %I %~nI.png -resize 64x64 -colors 60
JAVA手机网[www.cnjm.net]


假设我有个S60的游戏,想往S40平台移植,要把所有图片整体按比例缩小到原来的72.7%(128/176),那么用for命令可以这么做:

md s40
for %I in (*.png) do @pngmate %I s40\%I -resize 72.7% -colors 16


当然这只是举个例子,如果你也这么干的话,你的游戏的S40版本估计十有八九是个垃圾了,因为pngmate缩小后的图片比起专门绘制的像素图,那质量当然是差远了。真正负责任的开发者还是应该专门为40版本绘制相应大小的像素图,千万不要跟笔者一样偷懒哦!

 

分享到:
评论

相关推荐

    pngmate-gif2png

    使用`pngmate-gif2png`,你需要具备基本的命令行操作知识,例如在命令提示符窗口中定位到工具所在的目录,并输入相应的命令。基本使用方法通常是输入`PngMate.exe input.gif output.png`,其中`input.gif`是源GIF...

    PngMate图片转换精灵

    在使用PngMate时,需要注意的是,命令行工具通常需要一定的学习曲线,特别是对于那些不熟悉命令行操作的用户。然而,一旦掌握了基本的命令和参数设置,就能享受到它带来的高效和灵活性。对于初学者,可以参考官方...

    pngmate(png图片处理软件)

    2. 尺寸调整:PNGMate允许用户快速调整图片大小,适应不同分辨率的手机屏幕。这一步骤可以减少图片占用的存储空间,同时确保在各种设备上都能正确显示。 3. 颜色优化:在J2ME平台上,由于硬件限制,通常支持的颜色...

    pngMate工具

    在实际应用中,使用pngMate通常涉及以下步骤: 1. 安装pngMate:根据你的操作系统,下载并安装对应版本的pngMate。 2. 执行命令:通过终端或命令提示符,定位到含有PNG图片的目录,并输入pngMate命令加上相应参数。...

    图像转换工具PngMate

    2. **图像格式转换**:PngMate支持多种图像格式之间的转换,如PNG、JPG、GIF等。这种能力对于游戏开发者来说至关重要,因为他们需要根据不同的平台和设备优化图像格式。 3. **尺寸调整**:该工具能够轻松调整图像的...

    PNGMate-开源

    PNGMate是用于PNG和Animated GIF(gif89a)图像的命令行工具,专为移动游戏开发商和美术师设计,具有以下功能:优化/缩小PNG,减少颜色,在ani-gif和平铺的png之间转换,基于平铺调整大小和裁剪等

    手机游戏软件动画编辑器

    将GIF转换为PNG序列,可以让开发者分别处理每一帧,从而优化颜色使用,减小文件大小,这对于手机游戏的性能优化尤其关键,因为手机设备的内存和处理器资源相对有限。 "手机游戏软件动画编辑器"的PngMate.exe程序...

    PNG制作帮手

    使用PngMate时,用户只需导入GIF文件,软件会自动分析并分割出每一帧,保存为PNG格式。这个过程可以极大地简化开发者的任务,让他们能专注于游戏或应用的其他核心功能。对于需要创建动态效果或交互式界面的开发者来...

Global site tag (gtag.js) - Google Analytics