Изменение размера изображения до квадрата, но сохраняйте пропорции и заполняйте прозрачность

Im изменяет размер изображения до 100 x 100 изображений, это отлично работает.

НО ….. Я хотел бы сохранить исходное соотношение сторон. Поэтому мне нужно определить, больше ли ширина или высота исходного изображения, а затем заполнить остальную часть изображения 100 х 100 прозрачностью.

Поэтому, если портрет, высота будет равна 100, а справа и слева от изображения будет прозрачность.

пейзаж, ширина будет 100, а сверху и снизу изображения будет прозрачность.

Это возможно?

вот моя функция

// This function will proportionally resize image function resizeImage($CurWidth,$CurHeight,$MaxSize,$DestFolder,$SrcImage,$Quality,$ImageType) { //Check Image size is not 0 if($CurWidth <= 0 || $CurHeight <= 0) { return false; } //Check Image size is not 0 else if($CurWidth >= 1 && $CurWidth <= 100 || $CurHeight >= 1 && $CurHeight <= 100) { //Construct a proportional size of new image $NewWidth = $CurWidth; $NewHeight = $CurHeight; $NewCanves = imagecreatetruecolor($NewWidth, $NewHeight); } else if($CurWidth >= 101 || $CurHeight >= 101) { //Construct a proportional size of new image $ImageScale = min($MaxSize/$CurWidth, $MaxSize/$CurHeight); $NewWidth = ceil($ImageScale*$CurWidth); $NewHeight = ceil($ImageScale*$CurHeight); $NewCanves = imagecreatetruecolor($NewWidth, $NewHeight); } /* fix PNG transparency issues */ imagefill($NewCanves, 0, 0, IMG_COLOR_TRANSPARENT); imagesavealpha($NewCanves, true); imagealphablending($NewCanves, true); // Resize Image if(imagecopyresampled($NewCanves, $SrcImage,0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight)) { switch(strtolower($ImageType)) { case 'image/PNG': case 'image/png': imagepng($NewCanves,$DestFolder); break; case 'image/gif': imagegif($NewCanves,$DestFolder); break; case 'image/JPG': case 'image/JPEG': case 'image/jpeg': case 'image/pjpeg': imagejpeg($NewCanves,$DestFolder,$Quality); break; default: return false; } //Destroy image, frees memory if(is_resource($NewCanves)) {imagedestroy($NewCanves);} return true; } }