Kezdőoldal » Számítástechnika » Programozás » Tömörítő, jaj nekem?

Tömörítő, jaj nekem?

Figyelt kérdés

A feladat az, hogy egy két szinű kép tartalmát szeretném betömöríteni olyan módon, hogy a kép pixeleit sorról sorra megvizsgálom, és ha 4-nél több egyezést találok, akkor azt kiírom egy bájtba, az alábbiak szerint:


A bájt balról legelső bitje 1, ez jelzi, hogy tömörítvény.

A bájt balról második bitje 1 ha fekete és 0 ha fehér.

A bájt további hat bitje a pixelek száma (minusz 4). Ez maximum 67 lehet.


Ha az azonos szinű pixelek száma nem haladja meg a négyet, vagy ha nem azonosak a pixelek, akkor azokat tömörítés nélkül kell kiírni, az alábbi formában:


A bájt balról legelső bitje 0. Ez jelzi, hogy nem tömörített.

A bájt balról második és harmadik bitje számláló, ami azt jelzi, hogy hány bites szekvencia következik.

A bájt további öt bitje maga a szekvencia, aminek a tartalma a pixelek egymás utániságától függ. Ha a pixel fekete akkor egy 1-es, ha fehér akkor 0 lesz. például ilyen


0 11 10010


ez a bájt tartalmilag nem tömörített, négy darab pixelt tárol, amik egy fekete, két fehér és még egy fekete.


1 0 111110


ez a bájt meg tömörített, fehér pixeleket tömörít, azokból 66-ot. Mivel a 111110 az decimálisan 62 és a tömörítés az első négyet nem számolja. Ha 4 egyforma van csak, akkor azt tömörítetlenül írja le, ha van egy ötödik is, akkor azt egynek írja. Ezért 67 a maximum. A 67 egyforma tömörítve így nézne ki:


1 0 111111


vagy ha feketék a pixelek, akkor meg így:


1 1 111111


Ha 67-nél több egyforma van, akkor a 67-et kiírja egy bájtba és folytatja lenullázott számlálóval.


A balról első bit állapota: 1 ha tömörített, és 0 ha nem.

A balről második bit ha tömörített, akkor színbit (0 ha fehér, 1 ha fekete)

Ha nem tömörített akkor a második és a harmadik bit is számláló.


Ezt szeretném megvalósítani, freepascalban. Előre is köszönöm a konstruktív hozzászólásokat.



2023. febr. 24. 09:59
1 2
 11/17 A kérdező kommentje:
Nem megy, ugye? Segítsek? Én ugyanis mindjárt készen vagyok.
2023. febr. 24. 20:04
 12/17 anonim ***** válasza:
Jelentse mindenki a kérdést.
2023. febr. 24. 20:08
Hasznos számodra ez a válasz?
 13/17 A kérdező kommentje:

és megvaaan!


127 num

0 *

1 num

1 *

2 num

0 *

6 num

1 *

80 num

0 *

5 num

1 *

3 numlast

1 *last

2023. febr. 24. 20:12
 14/17 A kérdező kommentje:

woahh


127. bit: 0

1. bit: 1

2. bit: 0

6. bit: 1

80. bit: 0

5. bit: 1

3! bit 1 end

2023. febr. 24. 20:16
 15/17 A kérdező kommentje:

A megvalósítást nem fogom ide behányni, de elárulom azoknak, akik érdeklődnek a megoldás iránt, hogy hol szúrtam el.

Nagyon rá voltam állva az egymás után azonos bitekre, a gondolkodásmódban is és a kódban is. Ezzel is indult a program. Közben meg elfeledkeztem a másik, tömörítés nélküli ágról, ahol a bitek száma amúgy is erősen limitált, hiszen egy bájton belül kell legyen minden. A maximális bitszám 4 volt, de 7-re felbővítettem. Ezt érdemes vizgálni és csak akkor áttérni az azonosakra, ha a korábbi 4-et, vagy most már a 7-et meghaladják. Mert hiába jön egyforma szekvencia, ha a számuk csak hét vagy kevesebb, akkor is csak tömörítés nélkül lesz kiírva. Így már játszi könnyedséggel felépítettem a hibátlan logikát.

2023. febr. 24. 20:31
 16/17 anonim ***** válasza:
Deák Ferencért cserébe megcsinálom!
2023. febr. 24. 21:13
Hasznos számodra ez a válasz?
 17/17 A kérdező kommentje:
Hagyjuk! Úgy sem tudnám feltámasztani az öreget.
2023. febr. 24. 21:33
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!