vfp MyImg.Fll图像处理函数库
2009-09-07 21:38
* MyImg.fll
* 主要功能:抓屏、裁剪、缩放、旋转、格式转换、生成到变量、复制到剪贴板
* 作者:木瓜:
* 2007-06-28
* 调用顺序:ImgOpen() --> 其它函数 -->ImgClose() ,发生错误时,使用ImgGetLastError读取错误
#define _FROM_SCREEN 1
#define _FROM_CLIPBORD 2
#define _IMG_BMP 1
#define _IMG_GIF 2
#define _IMG_JPG 3
#define _IMG_PNG 4
#define _IMG_TIF 5
Clear
Set Library To myImg
* 1. 打开图像 屏幕、剪贴板
hImg = ImgOpen(_FROM_SCREEN) &&打开屏幕
* hImg = ImgOpen(_FROM_CLIPBORD) &&打开剪切板
* hImg = ImgOpen( cFileName ) &&打开图像
If hImg==""
MessageBox(ImgGetLastError(),"打开图像失败!")
Return
EndIf
ImgSave(hImg,"1原始图.bmp",_IMG_BMP)
* 2. 取得图像大小
"宽度:",ImgGetWidth(hImg)
"高度:",ImgGetHeight(hImg)
* 3. 裁剪 ImgCrop(参数:句柄,左,上,宽,高)
If not ImgCrop(hImg,10,10,500,300) &&(从(10,10)坐标开始,生成一个宽500,高300的图像
MessageBox(ImgGetLastError(hImg),"裁剪失败!")
EndIf
ImgSave(hImg,"3裁剪后.bmp",1)
* 4. 缩放 ImgZoom(句柄,新宽度,新高度)
If not ImgZoom(hImg,400,400) &&缩放到400×400的图像
MessageBox(ImgGetLastError(hImg),"缩放失败!")
EndIf
ImgSave(hImg,"4缩放后.bmp",1)
* 5.旋转 ImgRotate(句柄,角度)
If not imgRotate(hImg,90)
MessageBox(ImgGetLastError(hImg),"旋转失败!")
EndIf
ImgSave(hImg,"5旋转后.bmp",1)
* 6.格式转换
If not ImgSave(hImg,"6格式转换.png",_IMG_PNG) &&第二个参数为文件名,第三个为图片类型
MessageBox(ImgGetLastError(hImg),"格式转换失败!")
EndIf
* 7. 如果要转JPG,可以设jpg的品质 1-100
ImgSetJpegQuality(hImg,70) &&设置jpg的品质
If not ImgSave(hImg,"7格式转换.jpg",_IMG_JPG)
MessageBox(ImgGetLastError(hImg),"另存为失败!")
EndIf
* 8. 复制到剪贴版
If ImgCopyToClipbord(hImg)
MessageBox("已复制到剪贴板,可以打开画图程序粘贴")
Else
MessageBox(ImgGetLastError(hImg),"复制到剪贴板失败!")
EndIf
* 9.直接取得图像内容到变量(返回的是一个变量,可直接存入数据库)
vImgSrc = ImgGetPtr(hImg,_IMG_GIF) &&获取Gif格式的图像内容
StrToFile(vImgSrc,"9使用内存变量.gif")
* 10.关闭图像
ImgClose(hImg)
* 11.从内存变量中创建 ( vImgSrc是前面生成的,也可以用FileToStr取得
hImg2=ImgOpen(vImgSrc,_IMG_GIF)
If hImg2==""
MessageBox(ImgGetLastError(hImg),"从变量打开图像失败!")
Return
EndIf
* 12.与Vfp9的PictureVal结合使用,ImgGetPtr()的返回值可直接赋给PictureVal
If Val(_vfp.Version) >=9
Local oForm as Form
oForm=CreateObject("form")
oForm.AddObject("image","image")
With oForm.image as Image
.Visible=.t.
.PictureVal = ImgGetPtr(hImg2,_IMG_TIF) && 把格式转为tif,赋给image控件的PictureVal
EndWith
oForm.Show(1)
EndIf
ImgClose(hImg2)
Set Library To