3 de julio de 2006

Redimensionar imágenes con VFP 9 y GDI+

Artículo original: RESIZE IMAGES WITH VFP9 and GDI+
http://weblogs.foxite.com/vfpimaging/archive/2006/02/06/1124.aspx
Autor: Cesar Ch.
Traducido por: Ana María Bisbé York


La función GetThumbnailImage puede ser utilizada para redimensionar imágenes; pero el resultado nos deja una imagen de menor calidad.
#DEFINE GDIPLUS_PIXELFORMAT_1bppIndexed    0x00030101
#DEFINE GDIPLUS_PIXELFORMAT_4bppIndexed    0x00030402
#DEFINE GDIPLUS_PIXELFORMAT_8bppIndexed    0x00030803
#DEFINE GDIPLUS_PIXELFORMAT_16bppGrayScale 0x00101004
#DEFINE GDIPLUS_PIXELFORMAT_16bppRGB555    0x00021005
#DEFINE GDIPLUS_PIXELFORMAT_16bppRGB565    0x00021006
#DEFINE GDIPLUS_PIXELFORMAT_16bppARGB1555  0x00061007
#DEFINE GDIPLUS_PIXELFORMAT_24bppRGB       0x00021808
#DEFINE GDIPLUS_PIXELFORMAT_32bppRGB       0x00022009
#DEFINE GDIPLUS_PIXELFORMAT_32bppARGB      0x0026200A
#DEFINE GDIPLUS_PIXELFORMAT_32bppPARGB     0x000E200B
#DEFINE GDIPLUS_PIXELFORMAT_48bppRGB       0x0010300C
#DEFINE GDIPLUS_PIXELFORMAT_64bppPARGB     0x001C400E

lcSource = GETPICT("jpg;gif;bmp")
lcDestination = ADDBS(JUSTPATH(lcSource))+ "Resized_" +;
JUSTSTEM(lcSource)+".bmp"
LOCAL loImage AS GpImage OF ffc/_gdiplus.vcx
loImage = NEWOBJECT("GpImage", HOME() + "ffc/_gdiplus.vcx")
loImage.CreateFromFile(lcSource)

LOCAL loBitmap AS GpBitmap OF ffc/_gdiplus.vcx
loBitmap = NEWOBJECT("GpBitmap", HOME() + "ffc/_gdiplus.vcx")
LOCAL loGraphics as GpGraphics OF HOME() + ffc/_gdiplus.vcx
loGraphics = NEWOBJECT("GpGraphics",HOME() + "ffc/_gdiplus.vcx")

*** Ahora creamos una imagen con
*** Create Method - Crea un objeto bitmap .
*** ¿La sintaxis?: THIS.Create(tnWidth, tnHeight[, tnPixelFormat])
***
*** tnPixelFormat, es opcional, una de las constantes GDIPLUS_PIXELFORMAT_*,
*** su valor predeterminado es GDIPLUS_PIXELFORMAT_32bppARGB.

LOCAL lnNewWidth, lnNewHeight
lnNewWidth = 640 && Coloque aquí el ancho (Width) deseado
lnNewHeight = 480 && Coloque aquí la altura (Height) deseada

loBitmap.Create(lnNewWidth, lnNewHeight, GDIPLUS_PIXELFORMAT_32bppPARGB)
*** Las otras constantes están al inicio de este código

loGraphics.CreateFromImage(loBitmap)
loGraphics.DrawImageScaled(loImage, 0, 0, lnNewWidth, lnNewHeight)
loBitmap.SaveToFile(lcDestination, "image/bmp")
RETURN

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.