我正在学习getPixel32()以及位图和位图数据类。基本上,我想知道如何从十六进制值输出一个简单的ARGB踪迹。另一方面,我的印象是,我认为/希望是错误的,即十六进制值不能产生与RGBA值一样多的颜色。也许“网络安全”已经抛弃了我理解使用十六进制值生成颜色的用处或愿望。Actionscript 3.0将HEX转换为ARGB
1
A
回答
3
要提取颜色信息,您必须使用按位运算符。颜色存储为0xAARRGGBB,因此您必须提取这些部分。小片段应该完成这项工作:
var hex: uint = 0x00ff00ff;
var a: int = (hex >>> 0x18) & 0xff;
var r: int = (hex >>> 0x10) & 0xff;
var g: int = (hex >>> 0x08) & 0xff;
var b: int = hex & 0xff;
trace(a, r, g, b);
根据您指定RGBA值的方式,答案可能会改变。如果您使用RGBA值(其中每个通道由一个字节指定),则可以使用与十六进制值完全相同的颜色。您的“十六进制值”是一个由4个字节组成的无符号整数。在Flash中也有64位的数字类型,所以每个通道将被表示为8个字节而不是1个。你可以想象你有更多的精度。但是,可能您的屏幕设置为“真彩色(32位)”,并且无法显示多种颜色。你甚至超出双精度(64位),并使用小数精度,这主要用于财务计算。每个值由128位组成,每个通道为16个字节。这比使用十六进制表示时多16倍。当然,这是更精确的,但你的显示器将无法处理它。
附注。您的图片尺寸也是宽度高度通道*(每通道字节数)。所以如果你使用8位的每个通道一个字节,你已经有足够的颜色。对于一个大的图像来说,如果您从每个通道的8位到32位,差异相当大。
具有8位精度的1024x768图像为3072kb,而相同的32位图像在内存中为12288kb。使用Flash的Number类型,相同的图像将占用24576kb。所以你可能更好的保持8位精度,在大多数情况下应该足够了。
我希望这可以帮助你更好地理解图像及其结构。
相关问题
- 1. 将ActionScript 2.0代码转换为ActionScript 3.0
- 2. HSQLDB:将NUMERIC转换为HEX
- 3. 将ARGB转换为WPF中的RGB
- 4. Android - 将ARGB颜色转换为RGB
- 5. 帮助将Hex转换为布尔值?
- 6. 在perl中将数字转换为HEX
- 7. 如何将double转换为hex?
- 8. 将RGB转换为HEX失败
- 9. 如何将Hex转换为RGB?
- 10. C#将delphi TColor转换为彩色(Hex)
- 11. Python - 将Hex转换为INT/CHAR
- 12. ActionScript 3.0将XML格式转换为字符串
- 13. 将Actionscript 2代码转换为ActionScript 3
- 14. ARGB转换到PARGB
- 15. 将vCard 3.0转换为URL
- 16. NEON:如何将饱和度的128位ARGB转换为32位ARGB?
- 17. HEX到BIN转换
- 18. 转换RGBA为十六进制或ARGB转换为16进制
- 19. 将C宏转换为ActionScript 3
- 20. 将ActionScript对象转换为模型
- 21. 将php时间戳转换为actionScript
- 22. 将Markdown转换为HTML的ActionScript库
- 23. 使用actionscript将favicon转换为png?
- 24. 在ActionScript中将WAV转换为MP3
- 25. 将mxml Rect&SolidColor转换为actionscript
- 26. Actionscript flex:将#个颜色转换为uint
- 27. 将原始ARGB像素数据转换为UIImage
- 28. 这个语法是什么意思将argb转换为整数?
- 29. 将ARGB转换为RGB而不丢失信息
- 30. AS3将ARGB值的ByteArray转换为RGB uint
我更喜欢屏蔽我正在使用的通道,a =(十六进制&0xff000000),然后将其移入范围,>> 24为a。尽管如此,这是一个很好的方法 – avanderw 2012-01-19 10:00:16