我正在學習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