Как подготовить изображение для Instagaram?

У меня есть замечательная
функция
function SquareImage($imgSrc, $imgDes, $thumbSize = 1000){
    list($width, $height) = getimagesize($imgSrc);
    $myImage = imagecreatefromjpeg($imgSrc);
    if ($width > $height) {
        $y = 0;
        $x = ($width - $height) / 2;
        $smallestSide = $height;
    } else {
        $x = 0;
        $y = ($height - $width) / 2;
        $smallestSide = $width;
    }
    $thumb = imagecreatetruecolor($thumbSize, $thumbSize);
    imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide);
    if (file_exists($imgSrc)) {
        unlink($imgSrc);
    }
    imagejpeg($thumb, $imgDes, 100);
    @imagedestroy($myImage);
    @imagedestroy($thumb);
}
которая обрезает изображение (нужно 400х400.jpg)
Если на вход даю например 400х500 всьо ОК но проблема если фото например 300х400
Суть вопроса: Kак из фотки 300х400 или 300х600 сделать 400х400
Как мне кажеться можно как нибуть добавить белый фон а после использовать SquareImage();
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
Добавлять поля (белые / черные / серые и т.д.) - это один вариант.

Другой вариант - сначала пропорциональное увеличить изображение, чтобы размеры были не меньше 400.
А потом - обрезать до квадрата.

Я бы добавил проверку размеров и увеличение (если надо) сразу после строки:
list($width, $height) = getimagesize($imgSrc);

Изображение немного потеряет в качестве (а может и много - если один из размеров совсем маленький),
зато не будет лишних полей.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы