Delphi programozása - illusztrált bemutató a delphi 7 számára szakembereknek - grafikus

Illusztrált önkiszolgáló kézikönyv a Delphi 7 számára szakembereknek

Grafikus formátum JPEG. TJPEGI kategória

1988-ban elfogadták az állóképek tömörítésének első nemzetközi szabványát. Ezt a csoportot nevezték el - JPEG (Joint Photographic Expert Group). Az a tény, hogy a standard archiválók (ZIP, ARJ) és a hagyományos tömörítési algoritmusok GIF, TIFF és PCX formátumokban nem képesek szürkeárnyalatos vagy színes képet (például fényképet) tömöríteni - legfeljebb 2-3 alkalommal. A JPEG-ben alkalmazott algoritmus tízszeres időközönként lehetővé teszi a tömörítés elérését - az igazság, így a kép visszafordíthatatlan torzításnak van kitéve, és ettől a részletek részéig eltűnik. Nem értelmezhető (és káros!) A JPEG formátumú rajzok, rajzok, valamint a kis fokozatokkal rendelkező képek tárolására való törekvés - kifejezetten fényképészeti minőségű képekhez készült.

A JPEG formátum támogatása a Delphi-ban valósul meg a TJPEGImage osztályon keresztül. amely a TGraphic osztály leszármazottja.

A TJPEGImage név nem túl sikeres. Az időzítéshez ez az osztály nem a legkisebb kapcsolatban áll. Inkább a TBitmap osztály "unokatestvére".

Ehhez a célhoz két követelmény van. Egyrészt támogatnia kell az adatok tömörítését írásra a lemezre. Másrészről, kicsomagolt adatok DIB formátumban, így a rendszer képes igénybe venni őket. Ezért a TJPEGimage egy objektuma képes tárolni mindkét típusú adatot, valamint elvégezheti kölcsönös átalakításait, azaz tömörítést és dekompressziót. Ebből a célból módszert kínál:

Javasoljuk, hogy előzetesen hívja a DIBNeeded módszert a kép rajzolása előtt - ez gyorsítja a képernyőn történő megjelenítés folyamatát.

Emellett hasznos az Assign módszer használata. amely lehetővé teszi, hogy a TBitmap objektumot a TJPEGimage osztályba helyezze, és fordítva:

Ez átalakítja a formátumokat.

A TJPEGimage tulajdonságai feltételesen két csoportra oszthatók: tömörítésre és dekompresszióra használhatók.

A tömörítéshez szükséges tulajdonságok közül a legfontosabb a tömörítésMinőség:

típus TJPEGQualityRange = 1..100;

tulajdonság CompressionQuaiity: TJPEGQualityRange;

Meghatározza a tömörített kép minőségét és méretét. Ennek a tulajdonságnak a kis értékei miatt a fájlok nagyon kicsiek, de nagy torzítással (emlékeznek arra, hogy a JPEG szabvány tömörítést eredményez a minőség elvesztésével). A 100-as értékeknél a veszteség láthatatlan, de a fájl mérete is maximalizált.

A tömörített fájl méretét előre nem tudja megjósolni - a különböző képek tömörítettek, még a CompressionQuality egy értékével is.

Alapértelmezés szerint ez a tulajdonság értéke 75, amely ésszerű kompromisszumot biztosít a méret és a minőség között.

A kompressziós minőség mellett. A megjelenítés minőségét befolyásolhatja a tulajdonság

TJPEGPerformance = (jpBestQuality, jpBestSpeed);

Tulajdonság Teljesítmény: TJPEGPerformance;

Kizárólag kicsomagoláskor van szükség, és felelős a színpaletta helyreállításától a tömörített adatoktól. A rögzített kép minősége semmilyen módon nem érinti.

Mint a TBitmap osztályban is. A TJPEGimage tulajdonsággal rendelkezik

típus TJPEGPixelFormat = (jf24Bit, jfSBit);

tulajdonság PixelFormat: TJPEGPixelForm;

A lehetséges értékek figyelembe vett objektumához csak kettő jf8bit és jf24bit. Az alapértelmezett beállítás 24 bites formátum. Ha színes információra nincs szükség, állíthatja be a Grayscale tulajdonság True értékét - ebben az esetben a képet szürkeárnyalatos formában (256 szürke árnyalat) írja (vagy kicsomagolja).

A ProgressiveEncoding és a ProgressiveDisplay tulajdonságai meghatározzák, hogyan jelenik meg a kép a kicsomagoláskor. Az első felelős azért, hogy a tömörített összetevőket a fájlba írják. Ha a ProgressiveEncoding értéke True. A ProgressiveDisplay tulajdonság szerepet játszik. Az értéke attól függ, hogy a kép megjelenik-e, ha kicsomagolva van (ha igaz), vagy először teljesen kicsomagolódik, majd megjeleníti (ha hamis).

típus TJPEGScale = (jsFullSize, jsHalf, jsQuarter, jsEighth);

Tulajdonság Scale: TJPEGScale;

Tapasztalt szakértők fogják feltenni a kérdést: miért van ez? Elvégre elolvashatja a képet, majd normál módon csökkentheti annak mértékét? A JPEG fájlok információinak megjelenítése olyan, hogy egyszerűen kivághatja a képet a megfelelő méretarányban. Így kétszeres győzelem érhető el - a kicsomagolás idején és a kijelzőn.

A raszterképek nyomtatása problémákat okozhat a nyomtatólap méretének és felbontásának megfelelően. A legtöbbet el lehet távolítani a Delphi - jpegProj segítségével kapott példával. Nem a \ Demos mappában található, mint általában, hanem a Súgó \ Examples \ Jpeg mappában.

Összefoglalva, megjegyezzük, hogy a TJPEG-képosztálynak nincs saját vászonja a rajzoláshoz - ehhez azt kell átalakítani a TBitmap osztályba.