Delphi за професионалисти
JPEG графичен формат. TJPEGImage Class
През 1988 г. е приет първият международен стандарт за компресиране на неподвижни изображения. Той е кръстен на групата, работила по него - JPEG (Съвместна фотографска експертна група). Факт е, че стандартните архиватори (ZIP, ARJ) и традиционните алгоритми за компресиране във формати GIF, TIFF и PCX не могат да компресират сиво или цветно изображение (като снимка) достатъчно силно - максимум 2-3 пъти. Алгоритъмът, използван в JPEG, позволява десетократно компресиране - изображението обаче претърпява необратими изкривявания и някои от детайлите изчезват от него. Безсмислено е (и вредно!) Да се съхраняват рисунки, чертежи, както и всякакви изображения с малък брой градации в JPEG формат - той е предназначен специално за изображения с фотографско качество.
Поддръжката на JPEG се реализира в Delphi чрез класа TJPEGImage, който е потомък на класа TGraphic .
Името TJPEGImage не е напълно подходящо. Този клас няма нищо общо с Timage. По-скоро е братовчед от класа TBitmap. .
За такъв обект има двойни изисквания. От една страна, той трябва да поддържа компресиране на данни за запис на диск. От друга страна, това са разопаковани данни във формат DIB, за да могат да бъдат изобразени по искане на системата. Следователно обект от класа TJPEGimage може да съхранява и двата типа данни, както и да извършва взаимните им трансформации, т.е. компресиране и разопаковане. За да направите това, той предоставя методи:
Препоръчително е да извикате метода DIBNeeded предварително, преди да нарисувате картината - това ще ускори процеса на нейното показване на екрана.
Също така е полезно да използвате метода Assign, който ви позволява да поставите обект TBitmap в класа TJPEGimage и обратно:
Това преобразува формати.
Свойствата на TJPEGimage могат да бъдат грубо разделени на две групи: използвани за компресия и за разопаковане.
Най-важното от свойствата, необходими за компресия, е compressionQuality:
тип TJPEGQualityRange = 1.100;
свойство CompressionQuaiity: TJPEGQualityRange;
Той определя качеството на компресираното изображение и неговия размер. При ниски стойности на това свойство файловете са много малки, но с големи изкривявания (не забравяйте, че JPEG стандартът осигурява компресиране със загуби). При стойности, близки до 100, загубите са невидими, но размерът на файла също е увеличен.