Мне кажется я видел рабочие примеры на форуме но не могу уже вторые сутки их найти :laugh: то ли в полезняшках оно было то ли ещё где
Ну собственно проблема проста есть пару тысяч картинок в jpg , нужно ухудшить их качество (чтоб они поменьше весили и чтоб можно было отправить их в интырнет)
Киньте пожалуйста ссылку на рабочий пример либо посоветуйте что надо изменить в коде (код из хелпа выдран http://dundats.mvps.org/help/html/libfunctions/_GDIPlus_ImageSaveToFileEx.htm)
чтоб он не поворачивал картинку на 90 градусов а сжимал её на 20% от исходного качества например.
Добавлено:
Вроде работает, сам нашёл и написал , не понимаю всего да и разбираться лень
Не понятно пока как люди документацию ищут на структуры которые заполняют с помощью DllStructCreate...
строки
были откровенно содраны из форума без разбирательств , непонятно одно что я должен был прочесть чтобы их написать самому не прибегая к помощи форумаhttp://www.autoitscript.com/forum/topic/110501-gdiplus-change-quality-scale/))) и гугля)))
PS Если кто всё же будет использовать этот код, скажу что он отказался копировать файл сам в себя
Compress_Jpg_Img("All_Panel_2011_01_10_04_27_52.jpg","All_Panel_2011_01_10_04_27_52.jpg",30) - так не будет работать
Ну собственно проблема проста есть пару тысяч картинок в jpg , нужно ухудшить их качество (чтоб они поменьше весили и чтоб можно было отправить их в интырнет)
Киньте пожалуйста ссылку на рабочий пример либо посоветуйте что надо изменить в коде (код из хелпа выдран http://dundats.mvps.org/help/html/libfunctions/_GDIPlus_ImageSaveToFileEx.htm)
Код:
_GDIPlus_Startup ()
; Load image
$hImage = _GDIPlus_ImageLoadFromFile (@MyDocumentsDir & "\GDIPlus_Image.jpg")
; Get JPEG encoder CLSID
$sCLSID = _GDIPlus_EncodersGetCLSID ("JPG")
; Set up parameters for 90 degree rotation
$tData = DllStructCreate("int Data")
DllStructSetData($tData, "Data", $GDIP_EVTTRANSFORMROTATE90) ;;я чувствую здесь надо рыть
$tParams = _GDIPlus_ParamInit (1);я чувствую здесь надо рыть
_GDIPlus_ParamAdd ($tParams, $GDIP_EPGTRANSFORMATION, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data"))
; Save image with rotation
_GDIPlus_ImageSaveToFileEx ($hImage, @MyDocumentsDir & "\GDIPlus_Image2.jpg", $sCLSID, DllStructGetPtr($tParams))
; Shut down GDI+ library
_GDIPlus_ShutDown ()
чтоб он не поворачивал картинку на 90 градусов а сжимал её на 20% от исходного качества например.
Добавлено:
Сообщение автоматически объединено:
Вроде работает, сам нашёл и написал , не понимаю всего да и разбираться лень
Код:
Compress_Jpg_Img("E:\VM_Shared\jugger\JGR\Statistic\Full_For_Inet\All_Panel_2011_01_10_04_27_52.jpg","E:\VM_Shared\jugger\JGR\Statistic\Full_For_Inet1\All_Panel_2011_01_10_04_27_52.jpg ",30);
func Compress_Jpg_Img($sPath_To_Source_Jpg_File,$sPath_To_Result_Jpg_File,$iQuality=100)
_GDIPlus_Startup ()
$hImage = _GDIPlus_ImageLoadFromFile ($sPath_To_Source_Jpg_File)
; Get JPEG encoder CLSID
$sCLSID = _GDIPlus_EncodersGetCLSID ("JPG")
$tParams = _GDIPlus_ParamInit (1)
$tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
$pData = DllStructGetPtr($tData)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
$pParams = DllStructGetPtr($tParams)
; Save image with requred quality
_GDIPlus_ImageSaveToFileEx ($hImage, $sPath_To_Result_Jpg_File, $sCLSID, $pParams)
; Shut down GDI+ library
_GDIPlus_ShutDown ()
EndFunc
Не понятно пока как люди документацию ищут на структуры которые заполняют с помощью DllStructCreate...
строки
Код:
$tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
$pData = DllStructGetPtr($tData)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
$pParams = DllStructGetPtr($tParams)
PS Если кто всё же будет использовать этот код, скажу что он отказался копировать файл сам в себя
Compress_Jpg_Img("All_Panel_2011_01_10_04_27_52.jpg","All_Panel_2011_01_10_04_27_52.jpg",30) - так не будет работать