改变图片尺寸一个奇特的问题,试过很多方法都不行,求高手协助探究原因(GDI相关)
小弟 参考 haijie1223 老大 在
http://www.autoitx.com/forum.php ... =%B7%D6%B1%E6%C2%CA
这篇文章中 提供的 UDF 想改变 一下图片的尺寸大小,却遇到问题
经果不断的测试 从 操作系统 XP、WIN7 图檔格式 JPG 或 BMP 外加 AUTOIT版本 3.3.6 3.3.8 3.3.10 3.3.12 四种版本 ,不断的实验测试
终于发现 在 XP 底下 ( WIN7正常) 我 所附上的那个图档 不管是 JPG 格式 或者是 转成 BMP 格式 ,程序都无法转文件出我要的档案
但是如果将图片 换成其他的 图片 就都不会有问题
可是 目前需要转文件的都是如同附件这样的 图片
求 高手 解惑!! 为何 我这样的图片 这个 UDF 会失效呢???
附上 我的程序代码 与 图片
====================================================
_PIC2JPG('123.jpg', '888.jpg', 375, 174,100)
;~ Func _PIC2JPG------------------任何图片转jpg
;~ $sFile------------------------原图片路径名字
;~ $sFile_new--------------------要生成的jpg文件路径名字
;~ $new_W------------------------分辨率宽度(要生成的jpg文件的新宽度)
;~ $new_H------------------------分辨率高度(要生成的jpg文件的新高度)
;~ $IQUALITY = 100---------------图片质量(要生成的jpg图片质量)
Func _PIC2JPG($sFile, $sFile_new, $new_W, $new_H, $IQUALITY = 100)
_GDIPlus_Startup()
Local $HIMAGE = _GDIPlus_ImageLoadFromFile($sFile)
Local $GIQUALITY = $IQUALITY, $PPARAMS
Local $TPARAMS = _GDIPlus_ParamInit(1)
Local $TDATA = DllStructCreate("int Quality")
Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($HIMAGE)
Local $hBmp = _GDIPlus_BitmapCreateFromGraphics($new_W, $new_H, $hGraphics)
Local $hImage_New = _GDIPlus_ImageGetGraphicsContext($hBmp)
DllStructSetData($TDATA, "Quality", $GIQUALITY)
_GDIPlus_ParamAdd($TPARAMS, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($TDATA))
If IsDllStruct($TPARAMS) Then $PPARAMS = DllStructGetPtr($TPARAMS)
Local $CLSID = _GDIPlus_EncodersGetCLSID("JPG")
_GDIPlus_GraphicsDrawImageRect($hImage_New, $HIMAGE, 0, 0, $new_W, $new_H)
Local $SAVE = _GDIPlus_ImageSaveToFileEx($hBmp, $sFile_new, $CLSID, $PPARAMS)
_GDIPlus_GraphicsDispose($hImage_New)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($HIMAGE)
_GDIPlus_Shutdown()
If $SAVE = False Then Return SetError(1, 0, False)
Return True
EndFunc ;==>_PIC2JPG
|