引用:
原帖由 Guest 于 2008-11-05 10:21 发表
结果是全部成功的。得出的都是24位bmp。
这个……能不能将通道保留下来加到图片上成为32位bmp,或者单独提取出来成为8位bmp呢?我觉得单独保留通道信息比合成要简单吧……orz
我稍微详细的说一下处理过程吧。
人物立绘图 本质是256色bmp+256色alpha
3个办法:
1个是导出256色bmp和256色alpha各一个文件,其中256色bmp就是改正之前那些bmp,alpha文件本来可以单独导出,但是处理起来麻烦,偷懒所以当初没导出alpha,直接丢掉了。而且如果做得话就变成没张图一个目录,目录下2个文件 这样的结构了。。因为一个资源导出多余1个文件一上的话 就只能按目录导出了 orz
2是像现在这样 因为是256色, 所以每个像素1字节,这1字节用于索引256色的调色板,一个调色板项记录一种颜色值,因为每个像素分成3个分量:rgb,所以一个调色板项代表一种颜色3个分量,256色意味着同时定义了256种颜色。所以每像素一字节,这1字节可以索引这256种颜色中的任何一种。
这意味着我可以从调色板里取出rgb,保存为24位bmp。同时在保存24位bmp前,进行alpha bleding合成,合成公式是这样的:
结果颜色值 = 人物图像素颜色值 * 该像素alpha的值 / 16
之所以除16是因为它的alpha取值永远在[0,16]这个区间,相当于缩小了16倍(原本是256度alpha透明,现在只有17级透明了),同时这个公式也意味着是和黑色背景做合成,如果要和白色背景合成,后面还要再加上一段算式,我觉得和黑色合成挺好
3. 我不做合成了,从调色板取出每个颜色值(rgb 3字节)再加上alpha组成32位色bmp保存 我也不用辛苦作alpha blending了 但是 你用什么工具去做合成? 我刚才说了 它的alpha值的区间是[0, 16],不是[0,255],你可以想象一下普通的alpha图 再把他的值都除以16,这样的alpha你能直接用吗?或者说有工具可以自动把alpha扩大16倍吗? 我是基于这点且假设没有这样的工具所以自动作合成了 如果我按第3种方法做成不做处理的32位色bmp 我不知道你会如何处理它,也许你会说我提供的alpha值不对 但我可以保证 alpha值确实正确,需要的话我倒是可以放大16倍以后再保存到32位bmp里 但是我觉得cui里自动合成就够了 还是说你有什么更好的主意?如果有特别的理由说服我需要为你导出32位bmp(要alpha放大过得还是没放大),我可以导出特殊参数来供你使用。
期待你的回复
[
本帖最后由 痴汉公贼 于 2008-11-05 16:27 编辑 ]