PHP: Определение дробного соотношения сторон изображения в PHP

Для определения соотношения сторон изображения в PHP можно использовать функции getimagesize() и gmp_gcd().

Функция getimagesize() возвращает массив, который содержит информацию о размере изображения.

Функция gmp_gcd() вычисляет наибольший общий делитель.

list( $width, $height, $type, $attr ) = getimagesize( "path/to/your/image.jpg" );

# находим наибольший общий делитель ширины и высоты изображения
$gcd = gmp_intval( gmp_gcd( $width, $height ) );

# определяем соотношение сторон в виде дроби
$aspect_ratio = $width / $gcd . '/' . $height / $gcd;

# выводим результат в виде дроби
echo 'Соотношение сторон изображения: ' . $aspect_ratio;

Если библиотека GMP не установлена в вашей системе:

list( $width, $height, $type, $attr ) = getimagesize( "path/to/your/image.jpg" );

function gcd( $a, $b )
{
    return ( $b == 0 ) ? $a : gcd( $b, $a % $b );
}

$gcd = gcd( $width, $height );

$aspect_ratio = $width / $gcd . '/' . $height / $gcd;

echo 'Соотношение сторон изображения: ' . $aspect_ratio;

Примеры расчёта для различных размеров изображения:

$width = 1600;
$height = 900;
echo 'Соотношение сторон изображения: ' . getAspectRatio( $width, $height );
// > Соотношение сторон изображения: 16/9

$width = 1024;
$height = 768;
echo 'Соотношение сторон изображения: ' . getAspectRatio( $width, $height );
// > Соотношение сторон изображения: 4/3

$width = 1200;
$height = 600;
echo 'Соотношение сторон изображения: ' . getAspectRatio( $width, $height );
// > Соотношение сторон изображения: 2/1

$width = 1000;
$height = 1000;
echo 'Соотношение сторон изображения: ' . getAspectRatio( $width, $height );
// > Соотношение сторон изображения: 1/1

$width = 900;
$height = 1600;
echo 'Соотношение сторон изображения: ' . getAspectRatio( $width, $height );
// > Соотношение сторон изображения: 9/16
PHP 1.1 г. Просмотров: 394
Оценить код:

Код был обновлён. Предыдущий рейтинг:

  • Бесполезный код - 0 голосов
  • Костыль - 0 голосов
  • Полезный код - 1 голос

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.