@Kusmich

Почему код ресайза на php ставит автоматическую ширину вместо заданной?

Скрипт на php для ресайза изображений почему то делает автоматическую ширину картинки вместо той которую я задаю в переменной . Вот место отвечающее за задание параметров :
$destPath = $DestImagesDirectory.$file;
        $NewImageWidth = 500;
        $NewImageHeight = 260;
        $Quality = 90;


после задание ширины 500 он автоматически её сам отрегулирует . Подскажите как это можно исправить вот весь код :

ini_set('max_execution_time', 0);

//Initial settings, Just specify Source and Destination Image folder.
$ImagesDirectory = 'C:\Users\Sun\Desktop\origin-picture-logo/';//Source Image Directory End with Slash
$DestImagesDirectory   = 'D:\260_width_hight/'; //Destination Image Directory End with Slash
$DestImagesDirectory_2 = 'D:\480_440_width_height/';
$NewImageWidth ;  //New Width of Image
$NewImageHeight ; // New Height of Image
$Quality ;        //Image Quality
 


//Function that resizes image.
function resizeImage($SrcImage,$DestImage, $MaxWidth = 20,$MaxHeight = 29,$Quality = 90 )
{

global  $iWidth;
global  $iHeight;
global  $img;


    list($iWidth,$iHeight,$type) = getimagesize($SrcImage);
    $ImageScale             = min($MaxWidth/$iWidth, $MaxHeight/$iHeight);
    $NewWidth               = ceil($ImageScale*$iWidth);
    $NewHeight              = ceil($ImageScale*$iHeight);
    $NewCanves              = imagecreatetruecolor($NewWidth, $NewHeight);
        
        

switch(strtolower(image_type_to_mime_type($type)))

{
    
case 'image/jpeg':
$NewImage = imagecreatefromjpeg($SrcImage);
break;
case 'image/png':
$NewImage = imagecreatefrompng($SrcImage);

break;
case 'image/gif':
$NewImage = imagecreatefromgif($SrcImage);
break;
default:
return false;
}



// Resize Image
if(imagecopyresampled($NewCanves, $NewImage,0, 0, 0, 0, $NewWidth, $NewHeight, $iWidth, $iHeight))
    {
//  echo    $iWidth;
        $stndartwidth  = $iWidth;
// copy file
    if(imagejpeg($NewCanves,$DestImage,$Quality)){
            imagedestroy($NewCanves);
            return true;
        }
    }
};



//Open Source Image directory, loop through each Image and resize it.

if($dir = opendir($ImagesDirectory)){
    while(($file = readdir($dir))!== false){

        $imagePath = $ImagesDirectory.$file;
        global $destPath;
        $checkValidImage = @getimagesize($imagePath);
                 
        if(file_exists($imagePath) && $checkValidImage)//Continue only if 2 given parameters are true
        {

//Image looks valid, resize.
   
        $destPath = $DestImagesDirectory.$file;
        $NewImageWidth = 500;
        $NewImageHeight = 260;
        $Quality = 90;
                
            if(resizeImage($imagePath,$destPath,$NewImageWidth,$NewImageHeight,$Quality))
            {
               
                            
                echo $file.' resize Success!<br />';
              
            }else{

                echo $file.' resize Failed!<br />';

            }
        }
    }
    //  echo  $imagePath;
    closedir($dir);
}
?>
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 1
@seriogja
Здравствуйте!
у вас в коде ресайза:
list($iWidth,$iHeight,$type) = getimagesize($SrcImage);
    $ImageScale             = min($MaxWidth/$iWidth, $MaxHeight/$iHeight);
    $NewWidth               = ceil($ImageScale*$iWidth);
    $NewHeight              = ceil($ImageScale*$iHeight);

Т.е. скрипт определяет соотношение сторон и соответственно уменьшает/увеличивает. Это нужно для соблюдения пропорциональности фото.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час