@Kusmich

Как правильно написать условие на php?

Наковырял скрипт который берет изображения с одной папки уменьшает, копирует в другую папку. У меня не получается составить условие if которое проверяет если у исходного изображение ширина больше высоты, то новая ширина = 280, высота автоматически с сохранением пропорций;

если высота больше - новая высота 260, ширина автоматически с сохранением пропорций;

вот сам весь код :

<?php
//Maximize script execution time
ini_set('max_execution_time', 0);

//Initial settings, Just specify Source and Destination Image folder.
$ImagesDirectory    = 'new1/'; //Source Image Directory End with Slash
$DestImagesDirectory    = 'new2/'; //Destination Image Directory End with Slash
$NewImageWidth ; //New Width of Image
$NewImageHeight; // New Height of Image
$Quality        = 80; //Image Quality



if ($iWidth === $iHeight ){$NewImageWidth = 280;  $NewImageHeight = 280;   };




//Open Source Image directory, loop through each Image and resize it.
if($dir = opendir($ImagesDirectory)){
    while(($file = readdir($dir))!== false){

        $imagePath = $ImagesDirectory.$file;
        $destPath = $DestImagesDirectory.$file;
        $checkValidImage = @getimagesize($imagePath);

        if(file_exists($imagePath) && $checkValidImage) //Continue only if 2 given parameters are true
        {
            //Image looks valid, resize.
            if(resizeImage($imagePath,$destPath,$NewImageWidth,$NewImageHeight,$Quality))
            {
                echo $file.' resize Success!<br />';
                /*
                Now Image is resized, may be save information in database?
                */

            }else{
                echo $file.' resize Failed!<br />';
            }
        }
    }
    closedir($dir);
}

//Function that resizes image.
function resizeImage($SrcImage,$DestImage, $MaxWidth,$MaxHeight,$Quality)
{
    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))
    {
        // copy file
        if(imagejpeg($NewCanves,$DestImage,$Quality))
        {
            imagedestroy($NewCanves);
            return true;
        }
    }
}

?>
  • Вопрос задан
  • 493 просмотра
Решения вопроса 1
dzheka3d
@dzheka3d
Если я правильно понял, у вас не поучается пропорционально высчитать высоту у картинок с большей шириной и пропорционально ширину у картинок с большей высотой?
$ratio = $width / $height;
if($width > $height) {
    $width = 280;
    $height = round( $width / $ratio );
}else{
    $height = 260;
    $width = round( $height * $ratio );
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽
07 мая 2024, в 23:46
3000 руб./за проект
07 мая 2024, в 23:32
1200 руб./в час
07 мая 2024, в 23:27
1000 руб./за проект