FAQ

Here are answers to some user questions that showed up in the forums/mails and some made up (but maybe useful) questions too :

  1. I'm using Delphi XYZ or Lazarus ABC and I want to install Imaging package into IDE. Where do I find the right package?

    Package projects are located in (Imaging Root)\Source\Projects directory:

  2. Imaging doesn't compile in Lazarus, there are errors in ImagingComponents.pas unit!

    Lazarus is still beta and breaking changes in LCL occur from time to time. Imaging release always compiles with latest official Lazarus release. Fixes are sometimes already in SVN repository but they are commented out until new Lazarus version is released. If you get errors in this unit it can be one of these cases:

    1. You are using latest official Lazarus release that was released after latest Imaging release: Check Imaging's SVN repository, LCL version conflicts will probably already be fixed (or fixes would be there but commented out - so just uncomment them).
    2. You are using some working Lazarus SVN revision: Check Imaging's SVN repository, fixes could already be there but commented out. If they're not please let me know and I'll add them.
    So basically if you get the latest Imaging from SVN and problem is still there with no commented fix please let me know, better yet send the diff patch of the unit (my thanks to those who did).

  3. Imaging won't compile in Linux, error while linking: "cannot find library stdc++"

    This library was needed for JPEG 2000 support but as of Imaging 0.26.2 it is no longer the case (replaced by libc and few Pascal functions).

  4. My compiled programs are very very large!

    Delphi: With all file formats enabled your binary can be about ~900KiB bigger than without Imaging. If you don't like this you can disable some file formats. Best candidates are: TIFF ~400KiB!, JPEG 2000 ~150KiB, JPEG ~100KiB, PNG ~50KiB. Info about how to enable/disable file formats is in File Format Extensions.
    FPC: There's no large TIFF support and FPC generated exes are bigger than Delphi's anyway so binary size may not bother you so much. But if it does you can disable file formats too.

  5. How can I display images to user using Imaging? And it should be fast too...

    Displaying images wasn't one of Imaging's design goals: "You can use it to load images, prepare them, and then display them using some other library designed and optimized for this purpose." You can quickly and easily create Direct3D, OpenGL, and SDL textures/surfaces using Imaging and then display them using these APIs. VCL/LCL TGraphic descendant classes were later added to allow easy display of your images on you forms. But it basically just converts image to TBitmap and all drawing is handled by GDI (GTK/Qt/whatever) just like your regular TBitmap. Only 32bit images can be directly displayed on TCanvas (GDI/GTK only) using simple underlying OS/toolkit call in DisplayImage function (but with no fancy stuff like alpha blending etc.).

    So Imaging is best used if you prepare your in-memory image with it (load, resample, change format, gamma correction, alpha blend, etc.) and then show it to the user using libraries like OpenGL, Direct3D, SDL, Graphics32 or convert it to TBitmap and use it in regular VCL/LCL way.

  6. Where is collision detection? Window management? Audio support?

    Imaging is image library not gaming or any other. It can load, save, and alter raster images.