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.