Преобразовать квадратное изображение в прямоугольник

1

Я хочу, чтобы преобразовать 1200x1200 изображение в 1200x600.

Но я не хочу потерять пропорции изображения, и поэтому я хочу добавить белую рамку влево и вправо и иметь изображение посередине.

Окончательное изображение будет похоже на границу слева и справа и квадратное изображение в середине, затем я сохраню его в папку и пользователь в моем проекте.

Возможно ли это с помощью библиотеки GD?

Теги:
image
imagemagick
gd

1 ответ

1

Вы можете написать свою собственную математическую функцию для отображения изображения в холсте определенного размера. Здесь математическая функция, которую я использую,

function resize_image($img,$maxwidth,$maxheight) {
    //This function will return the specified dimension(width,height)
    //dimension[0] - width
    //dimension[1] - height

    $dimension = array();
    $imginfo = getimagesize($img);
    $imgwidth = $imginfo[0];
    $imgheight = $imginfo[1];
    if($imgwidth > $maxwidth){
        $ratio = $maxwidth/$imgwidth;
        $newwidth = round($imgwidth*$ratio);
        $newheight = round($imgheight*$ratio);
        if($newheight > $maxheight){
            $ratio = $maxheight/$newheight;
            $dimension[] = round($newwidth*$ratio);
            $dimension[] = round($newheight*$ratio);
            return $dimension;
        }else{
            $dimension[] = $newwidth;
            $dimension[] = $newheight;
            return $dimension;
        }
    }elseif($imgheight > $maxheight){
        $ratio = $maxheight/$imgheight;
        $newwidth = round($imgwidth*$ratio);
        $newheight = round($imgheight*$ratio);
        if($newwidth > $maxwidth){
            $ratio = $maxwidth/$newwidth;
            $dimension[] = round($newwidth*$ratio);
            $dimension[] = round($newheight*$ratio);
            return $dimension;
        }else{
            $dimension[] = $newwidth;
            $dimension[] = $newheight;
            return $dimension;
        }
    }else{
        $dimension[] = $imgwidth;
        $dimension[] = $imgheight;
        return $dimension;
    }
}

Предположим, что размер изображения 1200x1200 (высота: 1200, ширина: 1200), а размер вашего холста (где вы хотите отобразить изображение) - 1200x600 (высота: 1200, ширина: 600), вы можете вызвать эту функцию resize_image следующим образом:

$dimension = resize_image("{$your_image_path}.jpg",600,1200);
$width = $dimension[0];
$height = $dimension[1];

и после получения соответствующих размеров, покажите свое изображение, как это,

<img src="your_image_path.jpg" alt="Image" height="<?php echo $height; ?>" width="<?php echo $width; ?>" /> 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню