2007-04-08

Image Info with GdiPlusX

To obtain some basic image information, such as width, height, resolution and pixelformat, all we need is to initialize a Gdi+ image object and get some property values, as shown below:


Important:

The sample below uses the Gdiplus-X library, from VFPX
https://github.com/VFPX/GDIPlusX




LOCAL lcImage
m.lcImage = GETPICT()
IF EMPTY(m.lcImage)
    RETURN
ENDIF
DO LOCFILE("System.app")

LOCAL loImg AS xfcImage
WITH _SCREEN.SYSTEM.Drawing
    m.loImg = .IMAGE.FromFile(m.lcImage)
    IF ISNULL(m.loImg)
        MESSAGEBOX("could not load image file")
        RETURN
    ENDIF

    * get pixelFormat name
    LOCAL lnPix, lcPixFormat
    m.lnPix = m.loImg.PixelFormat
    DO CASE
        CASE m.lnPix = .Imaging.PixelFormat.Format1BppIndexed
            m.lcPixFormat = "1BppIndexed"
        CASE m.lnPix = .Imaging.PixelFormat.Format4BppIndexed
            m.lcPixFormat = "4BppIndexed"
        CASE m.lnPix = .Imaging.PixelFormat.Format8bppIndexed
            m.lcPixFormat = "8BppIndexed"
        CASE m.lnPix = .Imaging.PixelFormat.Format16bppGrayscale
            m.lcPixFormat = "16Bppgrayscale"
        CASE m.lnPix = .Imaging.PixelFormat.Format16bppRgb555
            m.lcPixFormat = "16BppRgb555"
        CASE m.lnPix = .Imaging.PixelFormat.Format16bppRgb565
            m.lcPixFormat = "16BppRgb565"
        CASE m.lnPix = .Imaging.PixelFormat.Format16bppArgb1555
            m.lcPixFormat = "16BppArgb1555"
        CASE m.lnPix = .Imaging.PixelFormat.Format24bpprgb
            m.lcPixFormat = "24BppRgb"
        CASE m.lnPix = .Imaging.PixelFormat.Format32bpprgb
            m.lcPixFormat = "32BppRgb"
        CASE m.lnPix = .Imaging.PixelFormat.Format32bppargb
            m.lcPixFormat = "32BppArgb"
        CASE m.lnPix = .Imaging.PixelFormat.Format32bpppargb
            m.lcPixFormat = "32BpppArgb"
        CASE m.lnPix = .Imaging.PixelFormat.Format48bpprgb
            m.lcPixFormat = "48BppRgb"
        CASE m.lnPix = .Imaging.PixelFormat.Format64bpppargb
            m.lcPixFormat = "64BpppArgb"
        OTHERWISE
            m.lcPixFormat = "unidentified"
    ENDCASE
ENDWITH

LOCAL lcInfo
m.lcInfo = ;
    "width : " + TRANSFORM(m.loImg.WIDTH) + SPACE(25) +;
    "height : " + TRANSFORM(m.loImg.HEIGHT) + CHR(13) +;
    "resolution - vertical : " + TRANSFORM(m.loImg.VerticalResolution) +  SPACE(6) +;
    "horizontal : " + TRANSFORM(m.loImg.HorizontalResolution) + CHR(13) +;
    "pixelFormat : " + m.lcPixFormat

MESSAGEBOX(m.lcInfo, 64, "Image properties for " + JUSTFNAME(m.lcImage))

3 comments:

  1. Felicitaciones Cesar, muy bueno tu apoyo a la comunidad.

    Saludos.
    Gracias Franklin!
    Esta es una hora en que debemos nos unir y crear nuevas opciones, y muestrar que con VFP todo se puede hacer. Para eso, solo se necesita un poco de creatividad !
    Saludos
    Cesar

    ReplyDelete
  2. Franklin,

    Mas un dato interesante:

    UD paso hace un mes un link para la clase de objectos degradados en FoxEcuador. Hubieron mas de 100 acesos a este articulo desde FoxEcuador ! Esto fue la origen que mas acesos tuve !

    ReplyDelete
  3. Versión en Español de este artículo en / Spanish version at  http://www.portalfox.com/article.php?sid=2405

    ReplyDelete