vfp改变图像尺寸的大小

*用来改变现有图像的尺寸
*******************************************
*算法制作:行者孙(QQ:310727570)
*******************************************
*VFP应用程式算法群:12787940
*******************************************
FUNCTION resizeimage(pSourceFileNAme as String,pNewFileNAme as String,nWidth as Long,nHeight as long)
PRIVATE pSourceFileNAme,pNewFileNAme,nWidth,nHeight
DECLARE INTEGER GdiplusStartup IN gdiplus;
   INTEGER @token, STRING @INPUT, INTEGER OUTPUT
DECLARE INTEGER GdipSaveImageToFile IN gdiplus.DLL ;
   INTEGER nImage, STRING wFilename, STRING qEncoder, INTEGER nEncoderParamsPtr
DECLARE INTEGER GdipLoadImageFromFile IN gdiplus.DLL ;
   STRING wFilename, INTEGER @nImage
DECLARE INTEGER GdipGetImageGraphicsContext IN gdiplus.DLL ;
   INTEGER nImage, INTEGER @ nGraphics
DECLARE INTEGER GdipCreateBitmapFromScan0 IN gdiplus.DLL ;
   INTEGER nWidth, INTEGER nHeight, INTEGER nStride;
   , INTEGER nPixelFormat ;
   , STRING @ cScan0, INTEGER @ nImage
DECLARE INTEGER GdipDrawImageRect IN gdiplus.DLL ;
   INTEGER nGraphics, INTEGER nImage, SINGLE,SINGLE,SINGLE,SINGLE
DECLARE INTEGER CLSIDFromString IN ole32 STRING lpsz, STRING @pclsid
DECLARE INTEGER GdiplusShutdown IN gdiplus INTEGER token
DECLARE integer GdipDisposeImage IN gdiplus  long

 

LOCAL hToken, cInput
hToken = 0
cInput = PADR(CHR(1), 16, CHR(0))
GdiplusStartup(@hToken, @cInput, 0)

LOCAL nImage
nImage = 0
GdipLoadImageFromFile(STRCONV(pSourceFileNAme + CHR(0), 5), @nImage)
#DEFINE   GDIPLUS_PIXELFORMAT_32bppARGB          0x0026200A

LOCAL nBitmap, nWidth, nHeight, nX, nY
nBitmap = 0
nX = 0
nY = 0
GdipCreateBitmapFromScan0(nWidth, nHeight, 0, GDIPLUS_PIXELFORMAT_32bppARGB, 0, @nBitmap)

LOCAL nGraphics
nGraphics = 0
GdipGetImageGraphicsContext (nBitmap, @nGraphics)

GdipDrawImageRect(nGraphics, nImage, nX, nY, nWidth, nHeight)
LOCAL lcEncoder
lcEncoder = REPLICATE(CHR(0),16)

*CLSIDFromString(STRCONV("{557CF401-1A04-11D3-9A73-0000F81EF32E}" + CHR(0), 5), @lcEncoder)

ERASE (pNewFileNAme)
*GdipSaveImageToFile (nBitmap, STRCONV(pNewFileNAme,5) + CHR(0), lcEncoder, 0)
GdipSaveImageToFile (nBitmap, STRCONV(pNewFileNAme,5) + CHR(0), 0h00F47C55041AD3119A730000F81EF32E, 0)
GdipDisposeImage(@nImage)


GdiplusShutdown(hToken)

 

CLEAR DLLS
ENDFUNC

 

 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VFP(Visual FoxPro)中,要读取JPG文件的具体尺寸,可以使用GDIPlus类库和一些VFP的内置函数来实现。 首先,需要加载GDIPlus类库,可以通过以下代码实现: ```foxpro DECLARE INTEGER Gdip_InitLib IN gdiplus DECLARE INTEGER Gdip_CreateBitmapFromFile IN gdiplus STRING, @nHandle AS INTEGER DECLARE INTEGER Gdip_GetImageWidth IN gdiplus INTEGER, @nWidth AS INTEGER DECLARE INTEGER Gdip_GetImageHeight IN gdiplus INTEGER, @nHeight AS INTEGER DECLARE INTEGER Gdip_DisposeImage IN gdiplus INTEGER DECLARE INTEGER Gdip_Shutdown Lib "gdiplus" ``` 接下来,可以编写一个函数来读取JPG文件的尺寸,代码如下: ```foxpro FUNCTION GetJpgSize LPARAMETERS tcFileName LOCAL lcFullPath lcFullPath = FULLPATH(tcFileName) LOCAL lnResult, lnWidth, lnHeight, lnHandle lnResult = Gdip_InitLib(0) IF lnResult <> 0 RETURN -1 && 加载GDIPlus类库失败 ENDIF lnResult = Gdip_CreateBitmapFromFile(lcFullPath, @lnHandle) IF lnResult <> 0 lnHandle = -1 && 读取图片失败 ELSE lnResult = Gdip_GetImageWidth(lnHandle, @lnWidth) lnResult = Gdip_GetImageHeight(lnHandle, @lnHeight) Gdip_DisposeImage(lnHandle) ENDIF lnResult = Gdip_Shutdown() IF lnHandle <> -1 RETURN lnWidth, lnHeight && 返回图片尺寸 ELSE RETURN -1, -1 && 读取图片尺寸失败 ENDIF ENDFUNC ``` 然后,可以在VFP中调用这个函数来获取JPG文件的具体尺寸,示例代码如下: ```foxpro LOCAL lnWidth, lnHeight lnWidth, lnHeight = GetJpgSize("image.jpg") IF lnWidth > 0 AND lnHeight > 0 ? "图片尺寸:", lnWidth, "x", lnHeight ELSE ? "读取图片尺寸失败" ENDIF ``` 以上就是使用VFP读取JPG文件的具体尺寸的方法。请注意,需要确保GDIPlus类库已正确安装,并将其相关文件放置在VFP环境的可访问路径下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值