我正在學習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. Android - 將ARGB顏色轉換爲HEX
- 2. 如何將ARGB轉換爲HEX的JavaScript?
- 3. 將ActionScript 2.0代碼轉換爲ActionScript 3.0
- 4. 怎麼把ARGB轉換成hex aarrggbb?
- 5. 將BGRA轉換爲ARGB
- 6. HSQLDB:將NUMERIC轉換爲HEX
- 7. 將NSString轉換爲int HEX
- 8. Flash Actionscript 3.0中的轉換
- 9. 將ARGB轉換爲WPF中的RGB
- 10. Android - 將ARGB顏色轉換爲RGB
- 11. ActionScript 3.0將XML格式轉換爲字符串
- 12. ActionScript 3.0:如何將JPEG編碼的ByteArray轉換爲位圖
- 13. 如何將此代碼轉換爲ActionScript 3.0?
- 14. 如何將此函數轉換爲ActionScript 3.0?
- 15. 將Actionscript 2代碼轉換爲Actionscript 3
- 16. 將Actionscript 2代碼轉換爲ActionScript 3
- 17. 將此PHP轉換爲Actionscript?
- 18. 用bash將hex轉換爲uint64_t
- 19. 將浮點數轉換爲RGB或HEX
- 20. 如何將double轉換爲hex?
- 21. 將Philips Hue XY值轉換爲HEX
- 22. Python - 將Hex轉換爲INT/CHAR
- 23. 在perl中將數字轉換爲HEX
- 24. C#將delphi TColor轉換爲彩色(Hex)
- 25. 如何將char []轉換爲Hex? C
- 26. 將RGB轉換爲HEX失敗
- 27. 錯誤將Hex轉換爲Ascii Javascript
- 28. 幫助將Hex轉換爲布爾值?
- 29. 如何將Hex轉換爲RGB?
- 30. 如何將Hex轉換爲RGB? (perl)
我更喜歡屏蔽我正在使用的通道,a =(十六進制&0xff000000),然後將其移入範圍,>> 24爲a。儘管如此,這是一個很好的方法 – avanderw 2012-01-19 10:00:16