Foxwx微信公众号管理软件---同心软件 -以高级编程语言进行微信公众号管理,我们一直在努力!

使用GDI对图片文件进行缩放

FUNCTION resizeimage(pSourceFileNAme as String,pNewFileNAme as String,nHeight as long)


*******************************************

算法制作:行者孙(QQ:310727570)

*******************************************

VFP应用程式算法群:12787940

*******************************************

****pSourceFileNAme 原始图片文件名

****pNewFileNAme      缩略图片文件名

****nHeight                 缩略图片高度(缩略图的宽度是根据原始图片比例来计算的)


DECLARE INTEGER GdiplusStartup IN gdiplus;

        INTEGER @token, STRING @INPUT, INTEGER OUTPUT

DECLARE INTEGER GdipGetImageHeight IN gdiplus;

        INTEGER   img,;

        INTEGER @ imgheight

DECLARE INTEGER GdipGetImageWidth IN gdiplus;

        INTEGER   img,INTEGER @ imgwidth

DECLARE INTEGER GdipLoadImageFromFile IN gdiplus.DLL ;

        STRING wFilename, INTEGER @nImage

DECLARE INTEGER GdipDrawImageRect IN gdiplus.DLL ;

        INTEGER nGraphics, INTEGER nImage, SINGLE,SINGLE,SINGLE,SINGLE

DECLARE INTEGER GdipCreateBitmapFromScan0 IN gdiplus.DLL ;

        INTEGER nWidth, INTEGER nHeight, INTEGER nStride,;

        INTEGER nPixelFormat,STRING @ cScan0, INTEGER @ nImage

DECLARE INTEGER GdipGetImageGraphicsContext IN gdiplus.DLL ;

        INTEGER nImage, INTEGER @ nGraphics

DECLARE INTEGER CLSIDFromString IN ole32 STRING lpsz, STRING @pclsid

DECLARE INTEGER GdipSaveImageToFile IN gdiplus.DLL ;

        INTEGER nImage, STRING wFilename, STRING qEncoder, INTEGER nEncoderParamsPtr

DECLARE INTEGER GdiplusShutdown IN gdiplus INTEGER token

#DEFINE   GDIPLUS_PIXELFORMAT_32bppARGB          0x0026200A

STORE 0 TO hToken,nImage,nGraphics,nBitmap,nWidth,uWidth,uHeight

cInput = PADR(CHR(1), 16, CHR(0))

GdiplusStartup(@hToken, @cInput, 0)

GdipLoadImageFromFile(STRCONV(pSourceFileNAme+CHR(0),5),@nImage)

GdipGetImageHeight(nImage,@uHeight)

GdipGetImageWidth(nImage,@uWidth)

nWidth=uWidth*(nHeight/uHeight)&&同比变比

GdipCreateBitmapFromScan0(nWidth,nHeight,0,GDIPLUS_PIXELFORMAT_32bppARGB, 0, @nBitmap)

GdipGetImageGraphicsContext (nBitmap, @nGraphics)

GdipDrawImageRect(nGraphics,nImage,0,0,nWidth, nHeight)

lcEncoder = REPLICATE(CHR(0),16)

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

GdipSaveImageToFile (nBitmap, STRCONV(pNewFileNAme,5)+CHR(0),lcEncoder,0)

GdiplusShutdown(hToken)

ENDFUNC


2019年7月18日 | 发布:admin | 分类:程序开发 | 评论:0

发表留言: