Добрый день.
Подскажите что не так со скриптом.
Есть скрипт autoit, который позволяет сжимать изображения (изменять размеры ширины и высоты фотофайла) - так чтобы не менялось слишком сильно его качество.
Но этот скрипт почему-то не работает.
Выдает ошибку: "Error: Duplicate function name"
Что не так записано в скрипте и как заставить этот скрипт работать ?
Подскажите что не так со скриптом.
Есть скрипт autoit, который позволяет сжимать изображения (изменять размеры ширины и высоты фотофайла) - так чтобы не менялось слишком сильно его качество.
Но этот скрипт почему-то не работает.
Код:
#include "File.au3"
#include "GDIPlus.au3"
_GDIPlus_Startup()
$CurImage = _GDIPlus_ImageLoadFromFile("test.jpg")
$sCLSID = _GDIPlus_EncodersGetCLSID("jpg")
$NewSizeW = Round((_GDIPlus_ImageGetWidth($CurImage) * 600) / _GDIPlus_ImageGetHeight($CurImage))
; Create thumbnail
$NewImage = _GDIPlus_BitmapCreateFromScan0($NewSizeW, 600, 0, _GDIPlus_ImageGetPixelFormatEx($CurImage))
$hGraphics = _GDIPlus_ImageGetGraphicsContext($NewImage)
_GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7)
_GDIPlus_GraphicsDrawImageRectRect($hGraphics, $CurImage, 0, 0, _GDIPlus_ImageGetWidth($CurImage), _GDIPlus_ImageGetHeight($CurImage), 0, 0, $NewSizeW, 600)
_GDIPlus_GraphicsDispose($hGraphics)
If FileExists("result.jpg") Then FileRecycle("result.jpg")
$tParams = _GDIPlus_ParamInit(1)
$tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", 100)
$pData = DllStructGetPtr($tData)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
$pParams = DllStructGetPtr($tParams)
_GDIPlus_ImageSaveToFileEx($NewImage, "result.jpg", $sCLSID, DllStructGetPtr($tParams))
_GDIPlus_ImageDispose($CurImage)
;_GDIPlus_ImageDispose($NewImage)
_GDIPlus_Shutdown()
Func _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $iStride = 0, $iPixelFormat = 0x0026200A, $pScan0 = 0)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "ptr*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[6]
EndFunc ;==>_GDIPlus_BitmapCreateFromScan0
Func _GDIPlus_GraphicsSetInterpolationMode($hGraphics, $iInterpolationMode)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hGraphics, "int", $iInterpolationMode)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0]
EndFunc ;==>_GDIPlus_GraphicsSetInterpolationMode
Func _GDIPlus_ImageGetPixelFormatEx($hImage)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipGetImagePixelFormat", "ptr", $hImage, "int*", 0)
Local $aFormat[2] = [0, ""]
If @error Then Return SetError(@error, @extended, $aFormat)
Return $aResult[2]
EndFunc ;==>_GDIPlus_ImageGetPixelFormatEx
Выдает ошибку: "Error: Duplicate function name"
Что не так записано в скрипте и как заставить этот скрипт работать ?