Доброе утро, форумчане.
Помогите решить вопрос.
Есть скрипт изменения размеров фотографии - с жестким ограничением по высоте.
Файл с новыми размерами скрипт сохраняет как Resize.jpg
Но он - почему-то не работает.
Этот скрипт почему-то подгоняет ширину фотографий, вместо их высоты.
Подскажите - как заставить скрипт подгонять размер фотографии по высоте, а не по ширине ?
Есть еще другой скрипт который изменяет размеры фото без сильной потери качества.
Однако он почему-то не может изменить размер фотографии, если значение высоты закрепить равным 1060
Если установить значение высоты равным 1060, то этот второй скрипт - успешно подгоняет размер по высоте, но при этом как-то искажает изображение(не снижая при этом его качество).
Я прикрепил файл на котором показано это искажение. Описать можно так - изначальное изображение - сжимается по вертикали, а снизу добавляется какая-то область черного цвета. В результате - пропорции вроде бы соблюдены, но в файл добавлен новый нежелательный элемент.
Как заставить второй скрипт - изменять размеры изображения без потери качества, не искажая изображение ?
Помогите решить вопрос.
Есть скрипт изменения размеров фотографии - с жестким ограничением по высоте.
Файл с новыми размерами скрипт сохраняет как Resize.jpg
Но он - почему-то не работает.
Код:
#Include <GDIPlus.au3>
#Include <WinAPI.au3>
$Hnew = 1060 ;~ Заданная высота
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile('test.jpg')
$H = _GDIPlus_ImageGetHeight($hImage)
$W = _GDIPlus_ImageGetWidth($hImage)
ConsoleWrite('$H='&$H&@CR)
ConsoleWrite('$W='&$W&@CR)
$H1 =$Hnew / $W * $H
$W1 = $Hnew
$hThumb = _GDIPlus_ImageGetThumbnail($hImage, $W1, $H1)
_GDIPlus_ImageSaveToFile($hThumb, 'Resized.jpg')
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ImageDispose($hThumb)
_GDIPlus_Shutdown()
Этот скрипт почему-то подгоняет ширину фотографий, вместо их высоты.
Подскажите - как заставить скрипт подгонять размер фотографии по высоте, а не по ширине ?
Есть еще другой скрипт который изменяет размеры фото без сильной потери качества.
Однако он почему-то не может изменить размер фотографии, если значение высоты закрепить равным 1060
Код:
#include "GDIPlus.au3"
_GDIPlus_Startup()
$CurImage = _GDIPlus_ImageLoadFromFile("test.jpg")
$sCLSID = _GDIPlus_EncodersGetCLSID("jpg")
$NewSizeW = Round((_GDIPlus_ImageGetWidth($CurImage) * 1060) / _GDIPlus_ImageGetHeight($CurImage))
; Create thumbnail
$NewImage = _GDIPlus_BitmapCreateFromScan0($NewSizeW, 1060, _GDIPlus_ImageGetPixelFormat($CurImage)[0])
$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("Resized.jpg") Then FileRecycle("Resized.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, "Resized.jpg", $sCLSID, DllStructGetPtr($tParams))
_GDIPlus_ImageDispose($CurImage)
_GDIPlus_ImageDispose($NewImage)
_GDIPlus_Shutdown()
Я прикрепил файл на котором показано это искажение. Описать можно так - изначальное изображение - сжимается по вертикали, а снизу добавляется какая-то область черного цвета. В результате - пропорции вроде бы соблюдены, но в файл добавлен новый нежелательный элемент.
Как заставить второй скрипт - изменять размеры изображения без потери качества, не искажая изображение ?