kk_lee69 发表于 2014-6-21 02:53:21

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

网上有很多 可以改变分辨率的但是……
我的图档是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
       

seniors 发表于 2014-6-21 07:47:35

用第一个函数就行了啊
试过可行啊

haijie1223 发表于 2014-6-21 16:07:36

建议楼主升级一下你的AU3版本,第一个函数我是在3.3.6.1版本下写的,测试可用。现在用3.3.9.4测试也可用~

kk_lee69 发表于 2014-6-21 17:22:23

回复 4# haijie1223
老大你的 作業系統是 XP 嗎

haijie1223 发表于 2014-6-23 20:54:37

回复 5# kk_lee69


    是的 XP sp3

kk_lee69 发表于 2014-6-24 11:32:38

回复 6# haijie1223

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

到底是哪裡出問題呢??   圖片嗎??

haijie1223 发表于 2014-6-24 14:15:08

回复 7# kk_lee69


    测试OK啊,请将你的测试语句发出来看下。

kk_lee69 发表于 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)

wbb870319 发表于 2014-7-12 16:40:27

向LZ学习中。

jdd3 发表于 2014-8-11 15:02:05

实在不行就用ImageMagick.dll吧

xz00311 发表于 2014-8-11 15:25:32

应该颜色有关
页: [1]
查看完整版本: 求助 JPG转 JPG 改变尺寸(分辨率) 的方法??试过很多都不行