HOW CAN I GET THE PROPERTIES OF AN IMAGE ?
HOW CAN I CREATE A THUMBNAIL OF AN IMAGE ?
HOW CAN I CONVERT AN IMAGE FILE TO ANOTHER FORMAT ?
HOW CAN I DRAW STRINGS AND CONTROL ALIGNMENTS ?
HOW CAN I CONVERT AN IMAGE FILE TO GRAYSCALE ?
HOW CAN I CONVERT AN IMAGE FILE TO NEGATIVE ?
HOW CAN I INCREASE OR REDUCE A COLOR FROM AN IMAGE ?
HOW CAN I CAPTURE A VFP SCREEN AND SAVE IT AS A PICTURE ?
HOW CAN I RESIZE AN IMAGE ?
This example resizes an image to 320x240 pixels, a good way to send images attached to emails.
#INCLUDE gpImage.h
IF Not "gpImage" $ SET("Procedure")
SET PROCEDURE TO gpImage ADDITIVE
ENDIF
gdip = CREATEOBJECT("gpInit")
img = CREATEOBJECT("gpImage")
lcFile = GETPICT()
img.Load(lcFile)
lcDestFile = "_" + JUSTSTEM(lcFile)
img.Resize(320, 240)
img.SaveAsJPEG(lcDestFile)
*** If we want to reduce image quality to get smaller files,
*** Could be also :
*** img.SaveAsJPEG(lcDestFile,50) && 100 = Best quality
img = NULL
gdip = NULL
HOW CAN I GET THE PROPERTIES OF AN IMAGE ?
#DEFINE CRLF CHR(13) + CHR(10)
#INCLUDE gpImage.h
IF Not "gpImage" $ SET("Procedure")
SET PROCEDURE TO gpImage ADDITIVE
ENDIF
gdip = CREATEOBJECT("gpInit")
img = CREATEOBJECT("gpImage")
lcFile = GETPICT()
img.Load(lcFile)
lcText = "Image Format : " + img.ImageFormat + CRLF + ;
"Pixel Format : " + img.PixelFormat + CRLF + ;
"Image Size : " + TRANSFORM(img.ImageWidth) + ;
" x " + TRANSFORM(img.ImageHeight) + CRLF + ;
"Horizontal Resolution : " + TRANSFORM(img.HorizontalResolution) + CRLF + ;
"Vertical Resolution : " + TRANSFORM(img.VerticalResolution)
MESSAGEBOX(lcText,64,"Image Properties")
img = NULL
gdip = NULL
HOW CAN I CREATE A THUMBNAIL OF AN IMAGE ?
#include gpImage.h
If Not "gpImage" $ Set("Procedure")
Set Procedure TogpImage Additive
EndIf
gdip = CreateObject("gpInit")
img = CreateObject("gpImage")
lcFile = GETPICT()
img.Load(lcFile)
img.Thumbnail(96, 72)
lcDestFile = "_" + JUSTSTEM(lcFile)
img.SaveAsJPEG(lcDestFile)
HOW CAN I CONVERT AN IMAGE FILE TO ANOTHER FORMAT ?
The example below asks for an image and saves it in 5 formats supported by GDI+
#include gpImage.h
If Not "gpImage" $ Set("Procedure")
Set Procedure To gpImage Additive
EndIf
gdip = CreateObject("gpInit")
img = CreateObject("gpImage")
lcFile = GETPICT()
img.Load(lcFile)
lcDestFile = "_" + JUSTSTEM(lcFile)
img.SaveAsJPEG(lcDestFile)
img.SaveAsTIFF(lcDestFile)
img.SaveAsBMP(lcDestFile)
img.SaveAsGIF(lcDestFile)
img.SaveAsPNG(lcDestFile)
img = NULL
gdip = NULL
HOW CAN I DRAW STRINGS AND CONTROL ALIGNMENTS ?
*** STRINGALIGN.PRG lcRoot = SYS(5) + SYS(2003) CD (lcRoot) SET DEFAULT TO (lcRoot) #include gpImage.h If Not "gpImage" $ Set("Procedure") Set Procedure TogpImage Additive EndIf lcDest = "tmp" + SYS(2015) + ".jpg" gdip = CreateObject("gpInit") img =CreateObject("gpImage") ** Creating and saving blank image img.Create(250, 210) white = RGB(255,255,255) lnHeight = img.ImageHeight lnWidth =img.ImageWidth oGr = CreateObject("Graphics",img.getimage()) lcText = "Testing String alignment - specially for my friends that speak French" oGr.SetBrush(white) oGr.SetAlignment(GDIPLUS_STRINGALIGNMENT_Near) oGr.SetRect(0,0, lnWidth, 70) oGr.DrawString("LEFT - " + lcText, "Tahoma", 10, "B") oGr.SetRect(0,70, lnWidth, 70) oGr.SetAlignment(GDIPLUS_STRINGALIGNMENT_Center) oGr.DrawString("CENTER - " + lcText, "Tahoma", 10, "B") oGr.SetRect(0,140, lnWidth, 70) oGr.SetAlignment(GDIPLUS_STRINGALIGNMENT_Far) oGr.DrawString("RIGHT - " + lcText, "Tahoma", 10, "B") img.SaveAsJPEG(lcdest,100) LOCAL loForm as Form loForm = CREATEOBJECT("MeuForm") WAIT WINDOW (lcdest) NOWAIT loForm.imgImage.Picture = lcdest loForm.Show(1) RETURN *=========================== DEFINE CLASS MeuForm as Form *=========================== Top = 0 Left = 0 Width = 250 Height = 210 Caption = "gpimage - TEXT ALIGNMENT" ADD OBJECT imgImage as Image WITH ; Top = 0, ; Left = 0, ; Width = Thisform.Width, ; Height = Thisform.Height PROCEDURE Init ENDPROC PROCEDURE destroy oGr = null img = null gdip = null ENDPROC ENDDEFINE
HOW CAN I CONVERT AN IMAGE FILE TO GRAYSCALE ?
##INCLUDE gpImage.h
IF Not "gpImage" $ SET("Procedure")
SET PROCEDURE TO gpImage ADDITIVE
ENDIF
Gdip = CREATEOBJECT("gpInit")
img = CREATEOBJECT("gpImage")
lcFile = GETPICT()
img.Load(lcFile)
oGr = CREATEOBJECT("graphics",img.GetImage())
oGr.ChangeColors(1)
lcDestFile = "_" + JUSTSTEM(lcFile)
img.SaveAsJPEG(lcDestFile)
oGr = NULL
img = NULL
gdip = NULL
HOW CAN I CONVERT AN IMAGE FILE TO NEGATIVE ?
That’s easy too.
Use the example above, changing the ChangeColors() parameter to 2
oGr.ChangeColors(2)
HOW CAN I INCREASE OR REDUCE A COLOR FROM AN IMAGE ?
Using the same prior example, the function “CHANGECOLORS” allows us to do that.
*** In this example, we are increasing GREEN in 20%
*** INSERT THIS PIECE OF CODE IN THE PRIOR EXAMPLE
LOCAL lnRed, lnGreen, lnBlue, lnAlpha
*** Allocate Values ranging from -100 to +100
*** 0 – ZERO means no changes
lnRed = 0
lnGreen = 20
lnBlue = 0
lnAlpha = 0
oGr.ChangeColors(lnRed, lnGreen, lnBlue, lnAlpha)
HOW CAN I CAPTURE A VFP SCREEN AND SAVE IT ?
Create a method in your form and call it CaptureForm
When you need to capture the image, just call Thisform.CaptureForm()
In The 2nd part of this code I use another very useful function, “CROP”, to cut from the captured image just the piece we are interested
#INCLUDE gpImage.h
IF Not "gpImage" $ SET("Procedure")
SET PROCEDURE TO gpImage ADDITIVE
ENDIF
gdip = CREATEOBJECT("gpInit")
img = CREATEOBJECT("gpImage")
img.Capture(Thisform.HWnd)
Img.SaveasBMP("Captured")
*** You can also remove the Window borders and titles, if you want :
LOCAL lnTitleHeight, lnLeftBorder, lnTopBorder
lnTitleHeight = SYSMETRIC(9)
lnLeftBorder = SYSMETRIC(3)
lnTopBorder = SYSMETRIC(4)
Img.Crop(lnLeftBorder, lnTitleHeight + lnTopBorder, ;
Img.ImageWidth - (lnLeftBorder * 2), ;
Img.ImageHeight - (lnTitleHeight + (lnTopBorder * 2)))
Img.SaveasBMP("Captured_Clean")
Img = NULL
Gdip = NULL
No comments:
Post a Comment