找回密码
 加入
搜索
查看: 9877|回复: 11

[图形处理] 求助 JPG转 JPG 改变尺寸(分辨率) 的方法??试过很多都不行

  [复制链接]
发表于 2014-6-21 02:53:21 | 显示全部楼层 |阅读模式
网上有很多 可以改变分辨率的  但是……
我的图档是JPG 我想转成JPG 在这边都会出问题
使用 BMP 图档 转 JPG 可以正常
但是 使用 JPG 转 JPG 会出问题
附上 网上找的到的范本…………..

有人可以告诉我 出了什么问题呢 为何 JPG 转 JPG 这些UDF 都不可以用呢??
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




Func _PicChangeSize($sFile, $sFile_new, $new_W, $new_H)
        _GDIPlus_Startup()
        Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
                MsgBox(0,"",$hImage)
        Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
                MsgBox(0,"",$hGraphics)
        Local $hBmp = _GDIPlus_BitmapCreateFromGraphics($new_W, $new_H, $hGraphics)
                MsgBox(0,"",$hBmp)
        Local $hImage_New = _GDIPlus_ImageGetGraphicsContext($hBmp)
        _GDIPlus_GraphicsDrawImageRect($hImage_New, $hImage, 0, 0, $new_W, $new_H)
        _GDIPlus_ImageSaveToFile($hBmp, $sFile_new)
        _GDIPlus_GraphicsDispose($hImage_New)
        _GDIPlus_BitmapDispose($hBmp)
        _GDIPlus_GraphicsDispose($hGraphics)
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_Shutdown()
EndFunc   ;==>_PicChangeSize
        
发表于 2014-6-21 07:47:35 | 显示全部楼层
用第一个函数就行了啊
试过可行啊
发表于 2014-6-21 16:07:36 | 显示全部楼层
建议楼主升级一下你的AU3版本,第一个函数我是在3.3.6.1版本下写的,测试可用。现在用3.3.9.4测试也可用~
 楼主| 发表于 2014-6-21 17:22:23 | 显示全部楼层
回复 4# haijie1223
老大你的 作業系統是 XP 嗎
发表于 2014-6-23 20:54:37 | 显示全部楼层
回复 5# kk_lee69


    是的 XP sp3
 楼主| 发表于 2014-6-24 11:32:38 | 显示全部楼层
回复 6# haijie1223

是怪了  ~~小弟測試了公司至少10幾台的XP電腦 包括簡體 繁體  都沒有可以過得
測試了  3.3.6     3.3.8    3.3.10    3.3.12  四個 AUTOIT 版本 就是沒有 可以過得

到底是哪裡出問題呢??   圖片嗎??
发表于 2014-6-24 14:15:08 | 显示全部楼层
回复 7# kk_lee69


    测试OK啊,请将你的测试语句发出来看下。
 楼主| 发表于 2014-6-24 14:53:11 | 显示全部楼层
本帖最后由 kk_lee69 于 2014-6-24 15:00 编辑

回复 8# haijie1223

老大   大概找到原因了~~~  詳情 請看

http://www.autoitx.com/thread-44623-1-1.html

我查了一下 我那個檔案 是 灰階的 JPG 檔  我把檔案 轉換成 全彩的 就不會有問題了

但是 原因是甚麼我就不懂了~~~  我需要 灰階 的 JPG 也可以轉的



語法只有一行   你的 UDF 外 只有

_PIC2JPG('123.jpg', '888.jpg', 375, 174,100)

本帖子中包含更多资源

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

×
发表于 2014-7-12 16:40:27 | 显示全部楼层
向LZ学习中。
发表于 2014-8-11 15:02:05 | 显示全部楼层
实在不行就用ImageMagick.dll吧
发表于 2014-8-11 15:25:32 | 显示全部楼层
应该颜色有关
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 17:45 , Processed in 0.093074 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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