找回密码
 加入
搜索
查看: 5748|回复: 12

[图形处理] 图片格式转化质量如何调节[已解决]

  [复制链接]
发表于 2012-3-22 14:12:05 | 显示全部楼层 |阅读模式
本帖最后由 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))
没有作用。
请高手指点一下,如何添加质量控制?使得在转化过程中能自由控制质量失真度。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +20 收起 理由
afan + 20 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-3-22 14:45:17 | 显示全部楼层
我那个水纹效果的帖子里有
#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
发表于 2012-3-22 15:01:46 | 显示全部楼层
嗯, 水纹? 那个妹子很清纯啊...
一定不能错过...这么好的图片!
 楼主| 发表于 2012-3-22 15:04:48 | 显示全部楼层
回复 2# afan


    A版,好像没有效果。我提供的附件里面有bmp文件。
你可以测试一下,用JPG和BMP转码  得到的图片质量差好多!


这张图上的效果,能看出差距来吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-3-22 15:07:26 | 显示全部楼层
$iQuality 参数是有效的,但是JPG转码比BMP转码的效果要差好多
发表于 2012-3-22 15:10:34 | 显示全部楼层
$iQuality 参数是有效的,但是JPG转码比BMP转码的效果要差好多
haijie1223 发表于 2012-3-22 15:07



    格式不同啊,不然分什么格式…
 楼主| 发表于 2012-3-22 15:11:33 | 显示全部楼层
回复 6# afan


    哦 是这样 谢谢A版
发表于 2012-3-22 15:13:10 | 显示全部楼层
回复 7# haijie1223


    bmp 是无损的,jpg之类都是有损压缩的,但体积一般都比 bmp 小很多

评分

参与人数 1金钱 +30 收起 理由
haijie1223 + 30 谢谢A版提醒,原来如此,一直都知道BMP比较 ...

查看全部评分

发表于 2012-3-22 16:35:42 | 显示全部楼层
回复 8# afan
bmp可以是32位的,而JPG是24位的,网上看到过32位的,不知道怎么制作

评分

参与人数 1金钱 +20 收起 理由
haijie1223 + 20 不会是bmp直接改了扩展名吧?

查看全部评分

发表于 2012-3-22 16:40:15 | 显示全部楼层
回复 9# seniors


    你都不知道那就很少有Au3论坛的人知道了
发表于 2012-6-9 07:07:13 | 显示全部楼层
回复 10# afan


    期待出现 转BMP格式
发表于 2012-12-21 14:07:18 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-19 15:03 , Processed in 0.090392 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表