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))
Felicitaciones Cesar, muy bueno tu apoyo a la comunidad.
ReplyDeleteSaludos.
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
Franklin,
ReplyDeleteMas 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 !
Versión en Español de este artículo en / Spanish version at http://www.portalfox.com/article.php?sid=2405
ReplyDelete