Digitális és informatikai

Kép nyers memóriaigénye: pixelszám, színcsatornák és tömörített fájl

Egy 12 megapixeles képen számoljuk ki az RGB, RGBA és 16 bites változat adatméretét. Megnézzük az átméretezés és egy feltételezett tömörítési arány hatását.

Dajka Gábor7 perc olvasásFrissítve: 2026-10-17

Egy kisméretű képfájl megnyitásakor jóval több memóriát használhat, mint amennyit a fájl a meghajtón foglal. A szerkesztéshez előállított képpontadat méretét a szélesség, a magasság, a csatornák száma és a csatornánkénti bitmélység határozza meg. A tömörített fájl hossza további tényezőktől függ, ezért a kettőt külön számold.

A képpontadat alapképlete

Nyers bájtszám = szélesség × magasság × csatornák száma × bitmélység / 8.

A szélesség és a magasság pixelben értendő. A bitmélység itt egyetlen csatornára vonatkozik. Egy 8 bites RGB kép három csatornája összesen 24 bitet, vagyis 3 bájtot jelent pixelenként. Egy külön áttetszőségi, azaz alfa-csatornával négy csatorna és 4 bájt adódik.

A W3C PNG specifikációja megkülönbözteti a színmintákat, a mintánkénti bitmélységet és az alfa-csatornát. A böngészőben gyakori, csatornánként 8 bites RGBA képpontadatot az MDN ImageData dokumentációja is leírja. A számítás a képpontok adatára vonatkozik; az alkalmazás teljes memóriaigénye ezen felül alakul.

Szemléltető példa: 4 000 × 3 000 pixel

A képpontok száma 4 000 × 3 000 = 12 000 000, vagyis 12 megapixel. Három, egyenként 8 bites csatornával:

12 000 000 × 3 × 8 / 8 = 36 000 000 bájt.

Ez 36 MB, bináris egységben 36 000 000 / 1 048 576 = 34,33 MiB. A két kijelzés ugyanazt az adatmennyiséget írja le eltérő egységben; az adatmennyiség-átváltóban ellenőrizheted.

KéppontadatBájt/pixelNyers méret
RGB, 8 bit/csatorna336 MB
RGBA, 8 bit/csatorna448 MB
RGB, 16 bit/csatorna672 MB

A 16 bites csatornák ebben a példában kétszer annyi bájtot igényelnek, mint a 8 bitesek. A „16 bites kép” megnevezés önmagában ezért pontatlan lehet: ellenőrizd, hogy csatornánkénti vagy összesített mélységről beszélnek.

Mindkét oldal felezése negyedannyi pixelt ad

Ha a képet 2 000 × 1 500 pixelre méretezed, a pixelszám 3 000 000-re csökken. Változatlan, 8 bites RGB tárolással ez 9 000 000 bájt, az eredeti 36 MB negyede.

A különbség azért ekkora, mert a két méret egymással szorzódik: 0,5 × 0,5 = 0,25. Ha csak a szélességet feleznéd változatlan magasság mellett, a pixelszám a felére csökkenne, közben a képarány is módosulna. Átméretezés előtt ezért a kívánt pixelméretet és a képarány megőrzését együtt határozd meg.

Miért nem jósolható meg ebből a JPEG vagy PNG mérete?

A tömörítés kihasználhatja a képtartalom ismétlődéseit, és veszteséges formátumnál a megőrzött részletek mennyisége is beállítható. Két azonos pixelméretű kép eltérő tartalommal eltérő méretű fájlt adhat. A PNG például veszteségmentes tömörítést használ; ez nem garantál minden képre azonos tömörítési arányt.

A képfájlméret-becslő egy kézzel megadott aránnyal is számol. Ha szemléltetésként 10:1 nyers/tömörített arányt feltételezünk, akkor 36 MB / 10 = 3,6 MB becsült adatméret. Ez a feltevés eredménye. A tényleges exportot mentsd el, és annak méretét mérd meg.

Hány kép dolgozható fel egyszerre?

Vegyünk egy feltételezett 512 MiB-os feldolgozási keretet. Ebből más adatok számára 64 MiB-ot tartunk fenn, és képenként két teljes, 4 000 × 3 000 pixeles, 8 bites RGBA-példánnyal számolunk. Egy kép két példánya 2 × 48 000 000 = 96 000 000 bájt.

A képfeldolgozásra maradó keret (512 − 64) × 1 048 576 = 469 762 048 bájt. A párhuzamos feladatok száma így lefelé kerekítés(469 762 048 / 96 000 000) = 4.

Egyidejű képekKét képpéldány feladatonként és 64 MiB egyéb keretBelefér 512 MiB-ba?
4451 108 864 bájtIgen
5547 108 864 bájtNem

Az 512 MiB összesen 536 870 912 bájt, ezért az ötödik feladat már ebben az egyszerű modellben sem fér el. A négyes korlát akkor használható, ha a két képpéldány és a külön fenntartott rész valóban lefedi a csúcsigényt. Dekódolási átmeneti memória vagy további réteg ezt módosíthatja.

A saját folyamatodnál először egyetlen képfeldolgozás legnagyobb memóriahasználatát mérd meg, majd ezzel számold újra a párhuzamosságot. A fájl lemezen mért méretéből erre a keretre nem lehet következtetni: itt a feldolgozás közbeni, egyszerre élő képadatok számítanak.

Eltérő méretű képeknél a négyes darabkorlátot ne vidd tovább változatlanul. Az éppen feldolgozott képek külön becsült csúcsigényét add össze, és ehhez számold hozzá az egyszer fenntartott közös keretet. Új feladat akkor indulhat a választott modellben, ha vele együtt is marad elegendő hely. A becslést a ténylegesen fogadott legnagyobb pixelmérettel, bitmélységgel és műveletsorral ellenőrizd; egy kicsi próbakép mérése nem igazolja a nagyobb feladatok keretét.

Egybites PNG-képnél a sorvégi bitek is helyet foglalnak

A fenti RGB- és RGBA-példák egész bájtokban tárolt csatornákkal számolnak. Egy bitenként csomagolt, 1 001 × 1 000 pixeles, egybites szürkeárnyalatos, nem váltottsoros PNG-képnél további lépés kell. A PNG sorábrázolási szabálya szerint az egy sorhoz tartozó minták bájtokba kerülnek; a következő sor új bájton kezdődik.

Egy sor felfelé kerekítés(1 001 / 8) = 126 bájt. Az ezer sor így 126 000 bájt képpontadat. Az összes bit egyszeri elosztása nyolccal 125 125 bájtot adna, ami 875 bájttal kevesebb, mert a sorvégek kihasználatlan bitjeit elhagyná. A szűrőjelölés, a tömörítés és a fájl többi része ezen felül alakítja a PNG tényleges méretét.

Ugyanez a kép 8 bit/csatornás RGBA-pufferként 1 001 × 1 000 × 4 = 4 004 000 bájt. A bitenként csomagolt fájladat mérete ezért nem azonos a szerkesztéshez választott reprezentáció méretével. Ahol az alkalmazás külön sorhosszt vagy sorigazítást használ, a tényleges sorhossz és a magasság szorzatát vedd alapul.

Nulla vagy negatív méretből nem készíthető ilyen kép. Nagy állománynál a ténylegesen dekódolt formátumot és a folyamat mért csúcsigényét ellenőrizd, mielőtt párhuzamos feladatokat indítasz.

Záró tudáspróba

Kérdésenként egy választ jelölj meg, majd a megoldások alapján pontozd magad. Ez a három kérdés a cikkben bemutatott összefüggéseket ellenőrzi.

1. Mennyi képpontadat kell a 4 000 × 3 000 pixeles, 8 bit/csatornás RGBA képhez?

  • A) 12 000 000 bájt.
  • B) 36 000 000 bájt.
  • C) 48 000 000 bájt.

2. 512 MiB keretből 64 MiB közös helyet fenntartasz, egy feladat pedig két 48 000 000 bájtos képpéldányt tart. Hány egyforma feladat fér a modellbe?

  • A) Négy.
  • B) Nyolc.
  • C) Öt.

3. Egy 1 001 pixel széles, egybites PNG ezer sorát bájthatáron kezdjük. Mennyi a csomagolt képpontadat a szűrőjelölések nélkül?

  • A) 4 004 000 bájt.
  • B) 125 125 bájt.
  • C) 126 000 bájt.

Megoldások és pontozás

1. C. A 12 millió pixel mindegyikéhez négy egybájtos csatorna tartozik: 12 000 000 × 4 = 48 000 000 bájt. Ismétléshez: Szemléltető példa: 4 000 × 3 000 pixel.

2. A. A 469 762 048 bájt maradékot feladatonként 96 000 000-rel osztva lefelé kerekítünk. Az ötödik feladattal már 547 108 864 bájt kellene. Ismétléshez: Hány kép dolgozható fel egyszerre?.

3. C. Minden sorhoz külön felfelé kell kerekíteni: 1 001/8 → 126 bájt. Ezer sor 126 000 bájt; az RGBA-puffer más reprezentáció. Ismétléshez: Egybites PNG-képnél a sorvégi bitek is helyet foglalnak.

Minden helyes válasz 1 pont; a hibás vagy kihagyott válasz 0 pont. Az összpontszám 0–3 lehet.

  • 0 pont: dolgozd végig újra a három megoldásban megjelölt részt, és írd le a példák kiinduló feltételeit.
  • 1 pont: a két elhibázott kérdésnél vezesd le a helyes választ; külön írd mellé, melyik feltétel vagy számolási lépés maradt ki.
  • 2 pont: térj vissza az egyetlen elhibázott kérdéshez kapcsolt részhez, majd egy bemenet megváltoztatásával ellenőrizd újra az eredményt.
  • 3 pont: a három összefüggést ebben a feladatsorban helyesen alkalmaztad. Próbáld ki a cikk egyik ellenőrzését saját adatokkal, a feltételeket és a mértékegységeket is feljegyezve.
További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás