图片格式转化质量如何调节[已解决]
本帖最后由 haijie1223 于 2012-3-22 15:11 编辑#include <GDIPlus.au3>
Local $bmpfile,$jpgfile
$bmpfile="test.bmp"
$jpgfile="test.jpg"
_BMP2JPG($bmpfile, $jpgfile)
Func _BMP2JPG($bmp, $jpg)
Local $hImage, $CLSID
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($bmp)
$CLSID = _GDIPlus_EncodersGetCLSID("JPG");图片质量失真较大
;~ $CLSID = _GDIPlus_EncodersGetCLSID("BMP");失真很小
_GDIPlus_ImageSaveToFileEx($hImage, $jpg, $CLSID)
_GDIPlus_Shutdown()
EndFunc ;==>_BMP2JPG
如题:发现把图片格式转化过程中,如果图片转码类型为JPG时,图片质量失真较大,如果用BMP转码类型,失真就很小。
请看代码测试,请问这是为何?
我试过添加质量控制:$tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", 100)
$tParams = _GDIPlus_ParamInit(1)
_GDIPlus_ParamAdd($tParams, 100, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Quality"))
_GDIPlus_ImageSaveToFileEx($hImage, @ScriptDir & "\test.jpg", $sCLSID, DllStructGetPtr($tParams))没有作用。
请高手指点一下,如何添加质量控制?使得在转化过程中能自由控制质量失真度。 我那个水纹效果的帖子里有#include <GDIPlus.au3>
_Pic2jpg('test.bmp', 'testj.jpg')
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() ;清理 GDI+ 使用的资源
If $save = False Then Return SetError(1, 0, False)
Return True
EndFunc ;==>_Pic2jpg 嗯, 水纹? 那个妹子很清纯啊...
一定不能错过...这么好的图片! 回复 2# afan
A版,好像没有效果。我提供的附件里面有bmp文件。
你可以测试一下,用JPG和BMP转码得到的图片质量差好多!
这张图上的效果,能看出差距来吗? $iQuality 参数是有效的,但是JPG转码比BMP转码的效果要差好多 $iQuality 参数是有效的,但是JPG转码比BMP转码的效果要差好多
haijie1223 发表于 2012-3-22 15:07 http://www.autoitx.com/images/common/back.gif
格式不同啊,不然分什么格式… 回复 6# afan
哦 是这样 谢谢A版 回复 7# haijie1223
bmp 是无损的,jpg之类都是有损压缩的,但体积一般都比 bmp 小很多 回复 8# afan
bmp可以是32位的,而JPG是24位的,网上看到过32位的,不知道怎么制作 回复 9# seniors
你都不知道那就很少有Au3论坛的人知道了 回复 10# afan
期待出现 转BMP格式 谢谢楼主分享
页:
[1]