代码之家  ›  专栏  ›  技术社区  ›  chris

如何将红色和绿色通道组合成蓝色通道?

  •  0
  • chris  · 技术社区  · 16 年前

    我正在把一个dos游戏移植到as3。我需要一种特殊的方式来格式化我的精灵文件。

    我需要知道如何使用256色的paletted png,并保存一个(可能是)32位png,其中所有三个颜色通道都只汇总为蓝色通道-因此所有颜色信息只包含在蓝色通道上。

    我计划修改一个as3 png编码器来实现这一点,但我不知道如何具体计算每个像素的值。有什么帮助吗?

    非常感谢!

    1 回复  |  直到 16 年前
        1
  •  3
  •   TheBrain    16 年前

    从像素提取颜色信息

    //24bit
    var color:uint = 0x336699;
    var r:uint = color >> 16;
    var g:uint = color >> 8 & 0xFF;
    var b:uint = color & 0xFF;
    
    //32bit
    var color:uint = 0xff336699;
    var a:uint = color >>> 24;
    var r:uint = color >>> 16 & 0xFF;
    var g:uint = color >>>  8 & 0xFF;
    var b:uint = color & 0xFF;
    

    把它放回一个像素

    //24bit
    var r:uint = 0x33;
    var g:uint = 0x66;
    var b:uint = 0x99;
    var color:uint = r << 16 | g << 8 | b;
    
    //32bit
    var a:uint = 0xff;
    var r:uint = 0x33;
    var g:uint = 0x66;
    var b:uint = 0x99;
    var color:uint = a << 24 | r << 16 | g << 8 | b;