@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);

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

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

Похожие вопросы