internet pencereler Android
Genişletmek

RGB formatındaki görüntü nedir. Renkli model RGB.

Geçenlerde, evrensel renk formatı dönüştürücü scummvm'e dayanarak, tam olarak bunu yapmak için kodu yazdım.

Buradaki başka bir sorunun cevabı Stackoverflow'da ve soru şu şekilde, bence bir kopya olmasa da, cevabın olduğunu düşünüyorum, bu yüzden sadece onunla iletişime geçeceğim:

Unutmayın, kesinlikle her faktörün çarpıcısının 5-6-5 formatında nasıl çalıştığını bilmiyorum. 6 bit bileşen daha doğru mu? Bu durumda otomatik sistem Dönüşüm bu işi gerçekleştirecek.

Her durumda, yukarıdaki kodla, bu örnek ihtiyaçlarınızı en iyi şekilde yerine getirmelidir. İşte kullanıcı formatını 5-5-5-1 RGBA dönüştürmek için kullanılır:

// byts 84 21 \u003d\u003d\u003e 0x8421 (Be) \u003d\u003d Bin \u003d\u003d\u003e 1000 0100 0010 0001 \u003d\u003d Split \u003d\u003d\u003e 10000 10000 10000 1 \u003d\u003d dec \u003d\u003d\u003e 16 16 16 1 (RGBA) \u003d\u003d AYAR \u003d\u003d \u003e 128 128 128 255 // Oluşturucudaki değerler: piksel başına bayt, r, g, b ve bir bileşenleri ve veri endyansını elde etmek için değişecek bit ve miktarın miktarı. Özel Statik Pixelformatter SixteenBPPFormatter \u003d Yeni Pixelformatter (2, 5, 11, 5, 6, 5, 1, 1, 0, YANLIŞ); Korumalı Statik Bayt Convert16BTO32B (BYTE IMAGEDATA, INT32 StartOffset, Int32 Genişliği, Int32 Yüksekliği, REF INT32 STRIDE) (INT32 NewImaGestride \u003d Genişlik * 4 ;; byte newimagedata \u003d yeni bayt; (int32 y \u003d 0; y< height; y++) { for (Int32 x = 0; x < width; x++) { Int32 sourceOffset = y * stride + x * 2; Int32 targetOffset = y * newImageStride + x * 4; Color c = SixteenBppFormatter.GetColor(imageData, startOffset + sourceOffset); PixelFormatter.Format32BitArgb.WriteColor(newImageData, targetOffset, c); } } stride = newImageStride; return newImageData; }

Yapmanız gereken tek şey, 5-6-5 formatındaki bitlerin doğru dağılmasıyla kendi Pixelformaterinizi tanımlamaktır.

Görüntüden 16 bit veri kaynağını almak için Bitmap.lockbits () 'ye bakmanız ve bu verileri yeni bir 32 bit görüntü argbine yazmanız gerekir. Bu yanıtta belirtilen buildingimage özelliğim, kaydın nasıl işleneceğini göstermelidir. Okuma yöntemi aslında çok daha kolaydır:

///

/// Ham baytları bir resimden alır. /// /// Baytları almak için görüntü. /// Alınan görüntü verilerinin sırası. /// Görüntünün ham baytları kamu statik bayt getimagedata (Bitmap SourceImage, Out Int32 Stride) (Bitmapdata Sourcedata \u003d SourceImage.Lockbits (Yeni Dikdörtgen (0, 0, SourceImage.Width, SourceImage.Height), ImageLockMode.Readonly, SourceImage.Pixelformat); Stride \u003d Sourcedata.Stride Byte verileri \u003d yeni bayt; marshal.copy (sourcedata.scan0, veri, 0, data.Length); SourceImage.Unlockbits (Sourcedata); Dönüş verileri;)

Lütfen, işlenmemiş görüntülerin baytlarını düzenlerken, "adımlar" ile "genişlik" arasındaki farkı düzenlerken lütfen unutmayın. Birçok formatta, görüntüdeki bir piksel hattı dört baytın bir sonraki katıyla tamamlanır, böylece tüm görüntü verilerini varsayar, bu da bir dizi olarak okuyamaz ve işlemeyemezsiniz; Bu sermaye baytları çok hızlı olacak. Örnek kodumda gösterildiği gibi, 16bpp formatımı Argb'de dönüştürmek için, gerçekten bunu sırayla yapmanız gerekir ve her satırda, yalnızca hala aralıktaki verileri kullandığınızdan emin olun (genişlik * bayt başına piksel).

Adımı değiştirebilecek tüm fonksiyonlar için, Ref olarak belirtmeniz önerilir.

En uygun, ortak, evrensel yol Renk göstergeleri - RGB. RGB, bir kısaltma (kırmızı yeşil mavi), yani: kırmızı, yeşil, mavi - temel renkler, diğer tüm renklerin elde edildiğini birleştirerek.

RGB ile renk birkaç şekilde kurulabilir, ardından her biri hakkında detaylı.

CSS'de fonksiyonel renk kayıt formatı

Fonksiyonel formatın genel görünümü: RGB (renk), burada "renk", bir virgül aracılığıyla listelenen üç tam sayı (0 ila 255) veya üç yüzde değer (% 0 ila% 100) bir kombinasyonudur. Sonra, birkaç örnek.

RGB (255, 255, 255) / * beyaz renk * /
rGB (0, 0, 0) / * Siyah renk * /
rGB (255, 0, 0) / * kırmızı renk * /

RGB (% 100,% 100,% 100) / * beyaz renk * /
rGB (% 0, 0,% 0) / * Siyah renk * /
rGB (% 100, 0,% 0) / * kırmızı renk * /

RGB'den sonra ve önce (yer yok!

Şimdi, başlık metninin metnini bazı randomik renklerle yapalım, örneğin RGB (222, 14, 100), bir tür pembe veya mor renktir. Daha fazla bir uygulama örneği.

H1 (
Renk: RGB (222, 14, 100);
}

Ve şimdi ilgi değerleri ve RGB yardımı ile, birkaç yeşil gölge oluşturun. Bu bir örnek 4.

Örnek 4, CSS Kodu

P.One (Renk: RGB (% 0,% 20,% 0);)
p.two (Renk: RGB (% 0,% 40,% 0);)
p.Three (Renk: RGB (% 0,% 60,% 0);)
p.Four (Renk: RGB (% 0,% 80,% 0);)
p.five (renk: RGB (% 0,% 100,% 0);)

Örnek 4, HTML kodu

Yeşil


Yeşil


Yeşil


Yeşil


Yeşil

Bu arada, yüzdeleri kesirli, örneğin RGB (% 40.2,% 22.34,% 12), bu nedenle renk daha doğru olacaktır.

Ve değerler aralığının ötesine geçersek ne olur? Özel bir şey olmayacak, sadece değerler en yakın sınırlara (% 0 veya% 100, 0 veya 255) yorumlanacaktır. Sonra örnek beşinci.

RGB (% 200,% 3100,% 101) / * RGB olacaktır (% 100,% 100,% 100) * /
rGB (-200%,% 0,% 12) / * RGB olacaktır (% 0,% 0,% 12) * /
rGB (257, -130, 212) / * RGB olacaktır (255, 0, 212) * /

Aşağıdaki CSS koduna sahip olduğumuzu varsayalım: RGB (% 12,% 96,% 43) ve faiz değerlerini tamsayılara çevirmemiz gerekiyor. Bu çok basit yapılır, her seviyeyi 255 ile çarpmanız ve daha sonra 100'e bölünmeniz gerekir, sonuç olarak, Matematik kurallarına göre yuvarlandıktan ve istediğimizden sonra RGB (30.6, 244.8, 109.65) elde ettik. RGB (31, 245, 110).

CSS'de zımpara renkli kayıt formatı

En sık tam olarak onaltılık format kullanıyorum, sadece daha kısa. Diğer örnek.

P (Renk: #ffffff;) / * Beyaz Metin Rengi * /
p (Renk: # 000000;) / * Siyah metin rengi * /
p (Renk: # FF0000;) / * Kırmızı Metin * /

RGB'den neredeyse hiç fark yoktur. RRGGBB'nin üç renk, 00 ila FF aralığında (FF, ondalık sistemde 255) aralığında belirtilmiştir. Gördüğünüz gibi, sayılar ve harfler arasında boşluk ve diğer işaretler yoktur (bu formatı daha çok beğenmemin ikinci nedeni) ve onaltılık kodu ızgara (#) ile başlar. Bu arada, onaltılık formatta hex formatı denir. Ayrıca, üç şekilde yazılmış üç özdeş renk örneği.

Açılış.rgb dosyalarıyla ilgili bir sorununuz var mı? Hakkında bilgi topluyoruz dosya formatları Ve RGB dosyalarına ihtiyacınız olanı söyleyebiliriz. Ek olarak, bu tür dosyaları açmak veya dönüştürmek için en uygun programlar öneririz.

Neden dosya formatına ihtiyacınız var.rgb?

Standart atama ilave renk modelinden türetilmiş RGB (kırmızı, yeşil, mavi), uzatma .rgb. "Renkli Raster Görüntü RGB SGI" dosya türü ile ilgili - daha geniş bir SGI resim dosyası formatının (SGI resim dosyası formatı) parçası. Şimdi faaliyetlerini durdurdu, SGI (Orijinal Silikon Grafikler), UNIX'e dayalı yüksek performanslı grafik istasyonları alanında öncüdü ve kendi ortak raster formatını geliştirdi. Tam bir SGI raster format özellikleri yayınlandı.

Dosya .rgb. SGI formatında renkli bir raster görüntüsü RGB (24-bit renk). Sıkıştırılmamış moda ek olarak, SGI formatı ayrıca role sıkıştırma sağlar (çalışma uzunluğu kodlama - grup kodlaması). Bir dosyada .rgb. Bir raster imajı olabilir.



SGI RGB dosyaları en temel tarafından tanınır ve desteklenir grafik editörleri ve özel ortamların çoğunu görüntülemek için programlar. Ek olarak .rgb. SGI raster görüntüleri yani başka uzantılara sahip olabilir. .rgb.a (32-bit RGBA görüntüleri) ve .SGI (genel genişleme).

Benzer kalitede genişlemede .rgb. Bazen nadiren tipik renk biçiminde uygulananlarla buluşabilir raster görüntüleri Q0 (RGB, 24-bit renk). Bu format ayrıca çoğu temel grafik izleyici / editör tarafından tanınır ve desteklenir.

RGB dosyalarını açma veya dönüştürme programları

Aşağıdaki programları kullanarak RGB dosyalarını açabilirsiniz: 

RGB modeli yayılan renkleri açıklar. Üç ana (temel) renge dayanmaktadır: kırmızı (kırmızı), yeşil (yeşil) ve mavi (mavi). RGB modelinin ekran için "yerli" olarak adlandırılabilir. Kalan renkler, temel bir kombinasyonla elde edilir. Bu türün renkleri katkı maddesi denir.

Yeşil ve kırmızı kombinasyonunun sarı renk, yeşil ve mavi mavinin bir kombinasyonu ve her üç rengin bir kombinasyonu olduğu çizimden görülebilir. Bundan, RGB'deki renklerin çıkarıldığı sonucuna varılabilir.

Ana renkler insan biyolojisinden alınır. Yani, bu renkler insan gözünün ışığa fizyolojik tepkisine dayanır. İnsan gözünün, en yeşil (m), sarı-yeşil (L) ve mavi menekşe (ler) ışıklarına tepki veren bir fotoreseptör hücreleri vardır ( maksimum uzunluk Sırasıyla 534 nm, 564 nm ve 420 nm'den dalgalar). İnsan beyni, üç dalgadan elde edilen sinyallerin farklılıklarına dayanarak çok çeşitli renkleri kolayca ayırt edebilir.

En geniş RGB renk modeli, TV veya bilgisayar monitörü gibi LCD veya plazma ekranlarında kullanılır. Ekrandaki her piksel, kırmızı, yeşil ve mavi değerler olarak donanım arayüzünde (örneğin, grafik haritaları) sunulabilir. RGB değerleri, netlik için kullanılan yoğunlukta değiştirilir. Kameralar ve tarayıcılar aynı sırayla çalışırlar, her piksel için çeşitli RGB yoğunluğunu kaydeden sensörlerle rengi yakalarlar.

16 bit modunda, Highcolor olarak da bilinen piksel, rengin (genellikle 555 modu olarak adlandırılır) veya yeşil için ek bir bit ile (565 modu olarak bilinen) 5 bite sahiptir. Yeşil renk, insan gözünün, diğer renklerden daha fazla gölgeyi tanımlama yeteneğine sahip olması nedeniyle desteklenir.

Truecolor olarak da bilinen piksel (BPP) üzerinde 24 bit modunda sunulan RGB değerleri genellikle 0 ile 255 arasında üç tam sayı ile ayırt edilir. Bu üç sayının her biri sırasıyla kırmızı, yeşil ve mavi yoğunluğudur.

RGB - Üç kanal: kırmızı, mavi ve yeşil, yani. RGB - Üç kanallı renk modeli. Her kanal, 0 ila 255'ten ondalık olarak veya gerçekliğe daha yakın, onaltılık sayı sistemlerinde 0'dan FF'ye kadar değer alabilir. Bu, kanal tarafından kodlanan baytın ve aslında herhangi bir bayt, sekiz bitten oluştuğu ve bit, biti 0 veya 1 ve sıkı 28 \u003d 256'yı içerebilir. Örneğin, RGB'de, kırmızı bir renk 256 dereceye çıkarabilir: tamamen kırmızıdan (ff) siyah (00). Böylece, RGB modelinin sadece 2563 veya 16777216 renk içerdiğini hesaplamak kolaydır.

RGB, üç kanalda ve her biri 8 bit tarafından kodlanır. Maksimum, FF (veya 255) Değer saf renk verir. Tüm renkleri, daha doğrusu, limit derecelerini birleştirerek beyaz renk elde edilir. Beyaz Kod \u003d FF (kırmızı) + FF (yeşil) + FF (mavi). Buna göre, kod siyah \u003d 000000. Kod sarı \u003d ffff00, mor \u003d ff00ff, mavi \u003d 00ffff.

Ayrıca 32 ve 48 bitlik renkler ekran modları vardır.

RGB, kağıda yazdırmak için kullanılmaz, bunun yerine bir CMYK-renk alanı var.

CMYK, renkli baskıda kullanılan renk modelidir. Renk modeli Renkleri tamsayılarla tanımlamak için matematiksel bir modeldir. CMYK modeli mavi, mor, sarı ve siyah renklerde inşa edilmiştir.