|
Obsługa formatu obrazu JPEG2000
Omówienie
HotPDF zapewnia teraz kompleksową obsługę formatów obrazów JPEG2000, w tym plików JP2, J2K i JPT. JPEG2000 to oparty na falkach standard kompresji obrazu, który zapewnia wyższą skuteczność kompresji i jakość niż tradycyjny format JPEG
Obsługiwane formaty
- JP2: format JPEG2000 Part 1 z pełną strukturą pliku
- J2K: format strumienia kodowego JPEG2000 (surowe dane skompresowane)
Najważniejsze funkcje
- Automatyczne wykrywanie formatu i odpowiednie przetwarzanie
- Obsługa kompresji bezstratnej i stratnej
- Obsługa obrazów wieloskładnikowych (RGB, RGBA, skala szarości)
- Zaawansowana obsługa głębi bitowej (8, 12, 16 bitów na komponent)
- Możliwości dekodowania progresywnego
- Oszczędne użycie pamięci przy przetwarzaniu dużych obrazów
- Budżety wyjścia dekodowania dla wrogich albo nieoczekiwanie dużych codestreamów
- Automatyczny wybór rozdzielczości renderera na podstawie widocznych pikseli docelowych
- Ograniczona równoległa rekonstrukcja niezależnych, przecinających się kafli
- Deterministyczne składanie, anulowanie, limit workerów i telemetria szczytowej pamięci
Przykład użycia
// Przykład Delphi - dodawanie obrazu JPEG2000 do PDF
procedure AddJPEG2000Image;
var
PDF: THotPDF;
begin
PDF := THotPDF.Create(nil);
try
PDF.FileName := 'output.pdf';
PDF.BeginDoc;
PDF.AddPage;
// Dodaj obraz JPEG2000 - format jest wykrywany automatycznie
PDF.AddImage('sample.jp2', 100, 100, 200, 150);
// Obsługiwany jest także format strumienia kodowego J2K
PDF.AddImage('sample.j2k', 100, 300, 200, 150);
PDF.EndDoc;
finally
PDF.Free;
end;
end;
Implementacja techniczna
Obsługa JPEG2000 jest zaimplementowana w module HPDFJpeg2000.pas, który udostępnia:
- THPDFJpeg2000Decoder: główna klasa dekodera do przetwarzania obrazów JPEG2000
- Wykrywanie formatu: automatyczna identyfikacja formatów JP2, J2K i JPT
- Inspekcja nagłówka:
InspectHeaderFromByteArray czyta wymiary, komponenty i SourceColorSpace bez dekodowania próbek pikseli - Przetwarzanie strumieni: obsługa ładowania obrazów z plików i strumieni
- Dostęp do kafli:
LoadTileFromByteArray dekoduje jeden zwalidowany kafl i raportuje jego offset źródłowy oraz siatkę - Wybór rozdzielczości:
LoadRegionFromByteArray łączy prostokąt źródłowy z współczynnikiem redukcji falkowej - Równoległe dekodowanie kafli:
LoadRegionFromByteArrayParallel używa niezależnych instancji dekodera i deterministycznego składania wiersz-główny - Załadowane PDF-y:
DecodeLoadedImageRegionAtResolution wybiera poziom, który nie niedorozwiązuje żadnego z docelowych wymiarów - Sterowanie operacjami:
JPEG2000ParallelTileDecoding i JPEG2000TileWorkerLimit sterują integracją z rendererem, a GetLastJPEG2000ParallelDecodeStats raportuje szeregowanie i szacunki budżetu - Integracja OpenJPEG: warstwa do zaawansowanego przetwarzania z użyciem biblioteki OpenJPEG
Korzyści wydajnościowe
- Lepsze współczynniki kompresji niż w tradycyjnym JPEG
- Brak artefaktów blokowych przy wysokich poziomach kompresji
- Progresywne przesyłanie i wyświetlanie
- Obsługa kodowania regionu zainteresowania (ROI)
- Opcja kompresji bezstratnej
- Współbieżna rekonstrukcja, gdy widoczny obszar przecina niezależne tile'e codestreamu
Zgodność
Obsługa JPEG2000 jest dostępna w 32-bitowych i 64-bitowych wersjach HotPDF oraz jest zgodna ze wszystkimi obsługiwanymi wersjami Delphi i C++ Builder
Zobacz też
|