【问题标题】:How to combine red and green channels into a blue channel?如何将红色和绿色通道组合成蓝色通道?
【发布时间】:2009-10-05 22:18:13
【问题描述】:

我正在将 DOS 游戏移植到 AS3。我需要一种专门格式化我的 sprite 文件的方法。

我需要知道如何获取 256 色调色板 PNG,并保存(大概)32 位 PNG,其中所有三个颜色通道仅汇总到蓝色通道 - 因此所有颜色信息仅包含在蓝色通道。

我打算修改一个AS3 PNG编码器来做到这一点,但我不知道如何具体计算每个像素的值。请问有什么帮助吗?

非常感谢!

【问题讨论】:

  • 你有例子吗?我不知道你怎样才能在不丢失信息的情况下总结它们。

标签: flash actionscript-3 image colors


【解决方案1】:

从像素中提取颜色信息

//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;

【讨论】:

    最近更新 更多