求救!请问BMP转JPG函数如何控制生成JPG图像的质量?(已解决)
本帖最后由 txm888 于 2010-8-21 13:07 编辑求救!请问BMP转JPG函数如何控制生成JPG图像的质量?
已有转换函数如下:
;BMP转JPG函数
#include <GDIPlus.au3>
_BmpToJpg("a.bmp", "b.jpg")
Func _BmpToJpg($Bmp,$Jpg)
Local $hImage, $CLSID
_GDIPlus_StartUp()
$hImage = _GDIPlus_ImageLoadFromFile($Bmp)
$CLSID = _GDIPlus_EncodersGetCLSID("JPG")
_GDIPlus_ImageSaveToFileEx($hImage,$Jpg, $CLSID)
_GDIPlus_ShutDown()
EndFunc
先在这里谢谢啦~~~ 似乎不能...:) 回复 2# itljl
肯定可以。
_GDIPlus_ParamAdd 回复 3# afan
afan大师,,不好意思,这几天我都不在,没法上网,,谢谢你的答案,我下去在研究研究,如果有结果了,就上来回复,谢谢! 回复 3# afan
或者,大师你能举个例吗?该UDF里边儿的函数我个个都拿来用了的,感觉没什么效果
{:face (245):} 本帖最后由 afan 于 2010-8-20 21:13 编辑
#include <GDIPlus.au3>
_Pic2jpg('a.BMP', 'b.jpg', 60) ;质量60
Func _Pic2jpg($sFileName, $oFileName, $iQuality = 100)
;Afan提示:转换任意格式图片为jpg格式,可设置$iQuality质量参数,0-100
;成功返回True;失败返回False,并设置@Error = 1
_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile($sFileName)
If $iQuality < 0 Then $iQuality = 0
If $iQuality > 100 Then $iQuality = 100
Local $giQuality = $iQuality, $pParams
Local $tParams = _GDIPlus_ParamInit(1)
Local $tData = DllStructCreate('int Quality')
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')
Local $save = _GDIPlus_ImageSaveToFileEx($hImage, $oFileName, $CLSID, $pParams)
_GDIPlus_Shutdown()
If $save = False Then Return SetError(1, 0, False)
Return True
EndFunc ;==>_Pic2jpg 回复 6# afan
跪谢了,,afan大师真是好人啊,,谢谢赐教! 回复 7# txm888
岂敢当 _ _ || 一届菜鸟而已 回复 8# afan
感谢啊,好人。
我整整用了一个小时去研究 _GDIPlus_ParamAdd 来实现质量设置都没有成功。
我想再请教一下,A版是怎么研究出来的?能给个大略的思路过程吗?? 知识真是越学越多啊,看了高手的东西后,似乎明白了,又似乎糊涂了 a版太谦虚了 好东西啊,值得学习 谢谢楼主....一定要顶! 默默等等楼下的回复
页:
[1]