Сегодня я хотел бы поделиться функцией, которую использую всегда, когда мне надо изменить размеры картинки. Эта функция позволяет с сохранением пропорции, либо вписать изображение в заданный прямоугольник, либо изменить какое-то одно измерение (длинну, ширину) до указанного.
function resizeProp($in_w, $in_h, $out_w, $out_h, $inlay = true) { if ( (!$inlay AND ( ($in_h > $in_w AND ($in_h / $in_w) < ($out_h / $out_w)) OR ($in_w > $in_h AND ($in_w / $in_h) > ($out_w / $out_h)) )) OR ($inlay AND ( ($in_h > $in_w AND ($in_h / $in_w) > ($out_h / $out_w)) OR ($in_w > $in_h AND ($in_w / $in_h) < ($out_w / $out_h)))) ) { $height = $out_h; $width = ($in_w / $in_h) * $height; } else { $width = $out_w; $height = ($in_h / $in_w) * $width; } return array('w' => round($width), 'h' => round($height)); }
$in_w, $in_h - размеры изображения (размер на входе).
Параметр $inlay - указывает на необходимость вписать изображение в прямоугольник с размерами: $out_w, $out_h (размер на выходе). В противном случае ($inlay = false), прямоугольник будет вписан в изображение.
Сложное условие в "if" определяет какое из измерений можно просто привести к нужному, второе измерение уже вычисляется используя исходную пропорцию.
Комментариев нет:
Отправить комментарий