Picture viewer controls for Delphi VCL, with JPEG XL built in.
TgllImageViewis the stand-alone viewer (theTImagecounterpart).TgllDBImageis the data-aware one (theTDBImagecounterpart; it readsTDBImage'sStretchandProportional, so a form converts by changing the class name).
Both descend from TgllCustomImageView, so they behave identically:
| Formats | JPEG, PNG, BMP, GIF (animated), ICO, WMF, EMF, TIFF (Windows WIC) and JPEG XL (libjxl, through libjxl-delphi); anything else registered with TPicture is tried too. |
| Viewing | Fit to window, shrink / zoom to fit, zoom (buttons, keys, Ctrl+wheel), pan by dragging, scroll bars, display rotation and flip, checkerboard behind transparency, error state. |
| Changing | Rotate and flip the picture itself keeping its format (a JPEG XL stays JPEG XL), clipboard, load and save (.jxl included), print, thumbnails. |
| Drag and drop | Drop files from Explorer and virtual files (an e-mail attachment, an image from a web browser); drag the picture out as a file (EnableDragOut), in its own format. |
| Data | TgllDBImage stores the bytes of a loaded file exactly as they are, loads asynchronously on request, skips the header old TDBImage controls wrote, and works in a TDBCtrlGrid. |
Delphi 13, Win32 and Win64, VCL. The only dependency outside the RTL and VCL is LibJxl, for JPEG XL. High-quality scaling through Skia (RenderMode = rmSkia) is optional: it lives in its own unit and package (gllImage.Skia, gllImageSkiaR), so the core never depends on Skia.
- Build the
LibJxlpackage from libjxl-delphi first:gllImageRrequires it. Then buildPackages\gllImage.groupproj(runtimegllImageR, the optional Skia renderergllImageSkiaR, design-timegllImageD, the tests and the demo). - Install
gllImageDfrom the 64-bit IDE (bin64\bds.exe). The controls appear on the gllImage palette page. - Put
jxl.dllbeside your executable (libjxl-delphi'sCopyJxlDlls.ps1does it). It is loaded only when a JPEG XL is decoded or encoded.
gllImageView1.FitToWindow := True;
gllImageView1.LoadFromFile( 'C:\Pictures\Photo.jxl' );
gllImageView1.RotatePicture( ro90 ); // the pixels, kept as JPEG XL
gllImageView1.SaveToFile( 'C:\Pictures\Turned.jxl' );Run Demo\gllImageDemo to see both controls, with two JPEG XL samples.
- Users Guide.md: how to use the controls, property by property.
- Help.md: building, troubleshooting, and the things that look wrong but are not.
- CHANGELOG.md: what changed and why.
BSD 3-Clause. libjxl and the libjxl-delphi binding are BSD-3 as well.
gllImage grew from GDBImage (Sebastián Mayorá's freeware enhanced TDBImage, later Roy Lambert's EDBImage), which lived inside GITLAKDB as TGDBImage until 2026-10-19. A form that still names TGDBImage streams in as TgllDBImage.
gllImage was developed with substantial assistance from an AI coding assistant (Anthropic's Claude), under the maintainer's direction and review. It is tested as described in Help.md.