อ่าน 2 นาที
โมเดลสี RGBA
RGBA ย่อมาจาก แดง เขียว น้ำเงิน อัลฟา แม้บางครั้งจะถูกอธิบายว่าเป็น ปริภูมิสี แต่จริงๆ แล้วมันคือ แบบจำลองสี RGB สามช่องสัญญาณที่เสริมด้วย ช่องสัญญาณอัลฟาช่อง ที่สี่...
โมเดลสี RGBA

RGBAย่อมาจากแดง เขียว น้ำเงิน อัลฟาแม้บางครั้งจะถูกอธิบายว่าเป็นปริภูมิสี แต่จริงๆ แล้วมันคือ แบบจำลองสี RGBสามช่องสัญญาณที่เสริมด้วยช่องสัญญาณอัลฟาช่อง ที่สี่ อัลฟาบ่งบอกถึงความทึบของแต่ละพิกเซล และช่วยให้สามารถรวมภาพเข้าด้วยกันโดยใช้ การผสมภาพ แบบอัลฟา (alpha compositing ) โดยมี พื้นที่ โปร่งใสและการลดรอยหยัก (anti-aliasing)ที่ขอบของบริเวณทึบ แต่ละพิกเซลเป็น เวก เตอร์ 4 มิติ
คำศัพท์ดัง กล่าว ไม่ได้ระบุว่าใช้พื้นที่สี RGB แบบใด นอกจากนี้ยังไม่ได้ระบุว่าสีเหล่านั้นถูกคูณด้วยค่าอัลฟาหรือไม่ และหากถูกคูณด้วยค่าอัลฟา ก็ไม่ได้ระบุว่าใช้พื้นที่สีใดในการคูณ ดังนั้นจึงจำเป็นต้องมีข้อมูลมากกว่าแค่ "RGBA" เพื่อพิจารณาถึงวิธีการจัดการกับภาพ
ในบางบริบท คำย่อ "RGBA" หมายถึงรูปแบบการจัดเรียงหน่วยความจำเฉพาะ (เรียกว่าRGBA8888ด้านล่าง) โดยมีคำอื่น เช่น "BGRA" ใช้สำหรับทางเลือกอื่น ในบริบทอื่นๆ "RGBA" หมายถึงรูปแบบการจัดเรียงใดๆ ก็ได้
การเป็นตัวแทน
ในกราฟิกคอมพิวเตอร์ พิกเซลที่เข้ารหัสข้อมูลพื้นที่สี RGBA จะต้องถูกจัดเก็บไว้ในหน่วยความจำคอมพิวเตอร์ (หรือในไฟล์บนดิสก์) ในกรณีส่วนใหญ่จะใช้หน่วยความจำขนาดเท่ากันสี่ส่วนที่อยู่ติดกัน โดยแต่ละส่วนแทนช่องสีหนึ่งช่อง และค่า 0 ในช่องสีหนึ่งช่องจะบ่งบอกถึงสีดำหรือค่าอัลฟาโปร่งใส ในขณะที่ค่า 1 ทั้งหมดจะบ่งบอกถึงสีขาวหรือค่าอัลฟาทึบแสงอย่างสมบูรณ์ รูปแบบที่พบได้บ่อยที่สุดคือการจัดเก็บ 8 บิต (หนึ่งไบต์ ) สำหรับแต่ละช่องสี ซึ่งเท่ากับ 32 บิตสำหรับแต่ละพิกเซล
ลำดับของไบต์ทั้งสี่นี้ในหน่วยความจำอาจแตกต่างกัน ซึ่งอาจนำไปสู่ความสับสนเมื่อมีการแลกเปลี่ยนข้อมูลภาพ การเข้ารหัสเหล่านี้มักจะแสดงด้วยตัวอักษรทั้งสี่ตัวในลำดับใดลำดับหนึ่ง (ที่พบมากที่สุดคือ RGBA) การตีความตัวย่อสี่ตัวอักษรนี้ยังไม่เป็นที่ยอมรับอย่างแพร่หลาย มีสองวิธีทั่วไปในการทำความเข้าใจตัวย่อ "RGBA":
- ในระบบการเรียงลำดับไบต์ "RGBA" หมายถึง ไบต์ R ตามด้วยไบต์ G ตามด้วยไบต์ B และตามด้วยไบต์ A ระบบนี้มักใช้ในการอธิบายรูปแบบไฟล์หรือโปรโตคอลเครือข่าย ซึ่งทั้งสองอย่างนี้ใช้การเรียงลำดับไบต์เป็นหลัก
- ในระบบการเรียงลำดับคำ "RGBA" หมายถึงคำ 32 บิตที่สมบูรณ์ โดยที่ R มีความสำคัญมากกว่า G ซึ่งมีความสำคัญมากกว่า B ซึ่งมีความสำคัญมากกว่า A
ใน ระบบ บิ๊กเอนเดียนรูปแบบทั้งสองนั้นเทียบเท่ากัน แต่ ในระบบ ลิตเติลเอนเดียนรูปแบบทั้งสองจะกลับด้านกัน ดังนั้น เพื่อให้เกิดความชัดเจน จึงจำเป็นต้องระบุว่าใช้ลำดับใดเมื่อกล่าวถึงการเข้ารหัส บทความนี้จะใช้รูปแบบที่เป็นที่นิยม คือ การเพิ่มคำต่อท้าย "8888" เพื่อระบุว่าเป็นหน่วย 8 บิต 4 หน่วย หรือ "32" หากกำลังพูดถึงหน่วย 32 บิต 1 หน่วย
| ลิตเติ้ลเอนเดียน | บิ๊กเอนเดียน | |
|---|---|---|
| RGBA8888 | ABGR32 | RGBA32 |
| ARGB32 | BGRA8888 | ARGB8888 |
| RGBA32 | ABGR8888 | RGBA8888 |
RGBA8888
ในOpenGLและPortable Network Graphics (PNG) จะใช้ลำดับไบต์ RGBA โดยที่สีจะถูกจัดเก็บในหน่วยความจำโดยที่ R อยู่ที่แอดเดรสต่ำสุด ตามด้วย G ตามด้วย B และสุดท้ายคือ A บนสถาปัตยกรรมแบบ little endian จะเทียบเท่ากับ ABGR32 [ 1 ]
ในระบบหลายๆ ระบบ เมื่อมีจำนวนบิตมากกว่า 8 บิตต่อช่องสัญญาณ (เช่น 16 บิต หรือเลขทศนิยม) ช่องสัญญาณเหล่านั้นจะถูกจัดเก็บในลำดับ RGBA แม้ว่าช่องสัญญาณ 8 บิตจะถูกจัดเก็บในลำดับอื่นก็ตาม
ARGB32
ช่องสัญญาณต่างๆ ถูกจัดเรียงในหน่วยความจำในลักษณะที่ว่า จำนวนเต็ม 32 บิตที่ไม่มีเครื่องหมายเพียงตัวเดียว จะมีค่าตัวอย่างเสียงอัลฟ่าอยู่ใน 8 บิตบนสุด ตามด้วยค่าตัวอย่างเสียงสีแดง สีเขียว และสุดท้ายคือค่าตัวอย่างเสียงสีน้ำเงินใน 8 บิตล่างสุด:

ค่า ARGB โดยทั่วไปจะแสดงด้วย ตัวเลข ฐานสิบหก 8 หลัก โดยแต่ละคู่ของตัวเลขฐานสิบหกจะแสดงค่าของช่อง Alpha, Red, Green และ Blue ตามลำดับ ตัวอย่างเช่น80FFFF00แสดงถึงสีเหลืองทึบแสง (ไม่ผ่านการคูณล่วงหน้า) 50.2% 80ค่าฐานสิบหก ซึ่งคือ 128 ในระบบเลขฐานสิบ แสดงถึงค่า Alpha 50.2% เนื่องจาก 128 มีค่าประมาณ 50.2% ของค่าสูงสุด 255 (FF hex) เพื่อถอดรหัสค่าต่อไป80FFFF00ตัวเลขแรกFFแสดงถึงค่าสูงสุดที่สีแดงสามารถมีได้ ตัวเลขที่สองFFเหมือนกับตัวเลขก่อนหน้าแต่สำหรับสีเขียว และตัวเลขสุดท้าย00แสดงถึงค่าต่ำสุดที่สีน้ำเงินสามารถมีได้ (ในทางปฏิบัติคือไม่มีสีน้ำเงิน) ดังนั้น สีแดง + สีเขียวจะได้สีเหลือง ในกรณีที่ไม่ได้ใช้ Alpha ค่านี้สามารถย่อเหลือ 6 หลักได้RRGGBBนี่คือเหตุผลที่เลือกวาง Alpha ไว้ในบิตบนสุด ขึ้นอยู่กับบริบท อาจใส่ 0xเครื่องหมาย a หรือเครื่องหมาย # [ 2 ]ไว้หน้าตัวเลขฐานสิบหก
รูปแบบนี้ได้รับความนิยมเมื่อมีการนำสี 24 บิต (และ RGBA 32 บิต) มาใช้ในคอมพิวเตอร์ส่วนบุคคล ในเวลานั้น การประมวลผลหน่วยประมวลผล 32 บิตเพียงหน่วยเดียวทำได้เร็วกว่าและง่ายกว่าการประมวลผลหน่วยประมวลผล 8 บิตสี่หน่วยมาก
ในระบบที่มีไบต์แบบ little-endian จะเทียบเท่ากับลำดับไบต์ BGRA ส่วนในระบบที่มีไบต์แบบ big-endian จะเทียบเท่ากับลำดับไบต์ ARGB
RGBA32
ในซอฟต์แวร์บางตัวที่พัฒนามาจากเครื่องที่มีสถาปัตยกรรม big-endian เช่นSilicon Graphicsสีจะถูกจัดเก็บในรูปแบบ 32 บิต คล้ายกับ ARGB32 แต่ค่าอัลฟ่าจะอยู่ใน 8 บิต ล่างแทนที่จะเป็น 8 บิตบน ตัวอย่างเช่น808000FFสีแดงและสีเขียว: 50.2%, สีน้ำเงิน: 0% และค่าอัลฟ่า: 100% จะได้สีน้ำตาล นี่คือสิ่งที่คุณจะได้หากข้อมูล RGBA8888 ถูกอ่านเป็นคำในเครื่องเหล่านี้ มีการใช้งานในPortable Arbitrary MapและFLTKแต่โดยทั่วไปแล้วพบได้น้อย
ในเครื่องที่มีสถาปัตยกรรมแบบ little-endian ข้อมูลไบต์จะถูกจัดเก็บในหน่วยความจำตามลำดับ ABGR
ดูเพิ่มเติม
ลิงก์ภายนอก
- ความโปร่งใสแบบอัลฟ่าตามข้อกำหนด PNG ของ W3C
- สี RGBA – หน้าแสดงตัวอย่างพร้อมข้อมูลการใช้งานบน CSS3.info
