txm888 发表于 2010-8-17 23:14:12

求救!请问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

先在这里谢谢啦~~~

itljl 发表于 2010-8-18 18:32:54

似乎不能...:)

afan 发表于 2010-8-18 18:34:10

回复 2# itljl


    肯定可以。
_GDIPlus_ParamAdd

txm888 发表于 2010-8-20 19:48:56

回复 3# afan


    afan大师,,不好意思,这几天我都不在,没法上网,,谢谢你的答案,我下去在研究研究,如果有结果了,就上来回复,谢谢!

txm888 发表于 2010-8-20 19:50:14

回复 3# afan


    或者,大师你能举个例吗?该UDF里边儿的函数我个个都拿来用了的,感觉没什么效果
{:face (245):}

afan 发表于 2010-8-20 21:00:20

本帖最后由 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

txm888 发表于 2010-8-21 13:07:20

回复 6# afan


    跪谢了,,afan大师真是好人啊,,谢谢赐教!

afan 发表于 2010-8-21 13:10:12

回复 7# txm888


    岂敢当 _ _ ||   一届菜鸟而已

itljl 发表于 2010-8-21 21:35:45

回复 8# afan


感谢啊,好人。
我整整用了一个小时去研究 _GDIPlus_ParamAdd 来实现质量设置都没有成功。

我想再请教一下,A版是怎么研究出来的?能给个大略的思路过程吗??

处女 发表于 2010-12-31 00:28:36

知识真是越学越多啊,看了高手的东西后,似乎明白了,又似乎糊涂了

zery 发表于 2011-4-9 19:44:43

a版太谦虚了

panda 发表于 2011-4-11 15:33:43

好东西啊,值得学习

peter13447 发表于 2015-3-23 12:18:21

谢谢楼主....一定要顶!

gwgelin 发表于 2015-4-12 19:10:48

默默等等楼下的回复
页: [1]
查看完整版本: 求救!请问BMP转JPG函数如何控制生成JPG图像的质量?(已解决)