Идея закруглять углы у всего что только можно последнее время стала достаточно популярна. Многие хотят что-то закруглить у себя на сайте, но не все знают как это сделать.
Кто-то использует стили, кто-то javascript, кто-то php. Последний вариант мы и рассмотрим в этой статье. Этим способом мы сумеем закруглять углы у всех изображений, и обеспечим полную кроссбраузерность, поскольку картинки будут обрезаться по краям сразу после загрузки. Разумеется имеются и минусы - загруженные картинки навсегда останутся с круглыми краями, но отсутствие проблем с отображением в браузерах, никакого лишнего javascript кода это тоже хорошо.
Поэтому если мы уж и решили округлить некоторые части нашего сайта, то этот способ самый рациональный.
Итак, рассмотрим как это можно сделать на примере InstantCMS.
Открываем файл
includes/graphic.inc.php
перед
PHP:
if ($watermark) { img_watermark($idest, $new_width, $new_height); }
вставляем
PHP:
//////// round image corners settings
$corner_radius = 15; // Радиус обрезания угла.
$r = 255; // Красный. --Параметры фона за углами (цвет угла).
$g = 255; // Зеленый. --Параметры фона за углами (цвет угла).
$b = 255; // Синий. --Параметры фона за углами (цвет угла).
/////// end rics
function roundCorner($file_name = false, $corner_radius){
$err = true;
$image = imagecreatefromjpeg($file_name);
if($image){$err = false;}
if(!$err){
copy ($file_name);
funcRound($image,$corner_radius);
imagejpeg($image, $file_name,100);
imagedestroy($image);
}}
function funcRound($img, $radius=5, $rate=15){
$width = imagesx($img);
$height = imagesy($img);
imagealphablending($img, false);
imagesavealpha($img, true);
$rs_radius = $radius * $rate;
$rs_size = $rs_radius * 2;
$corner = imagecreatetruecolor($rs_size, $rs_size);
imagealphablending($corner, false);
$trans = imagecolorallocate($corner, $r, $g, $b);
imagefill($corner, 0, 0, $trans);
$positions = array(
array(0, 0, 0, 0),
array($rs_radius, 0, $width - $radius, 0),
array($rs_radius, $rs_radius, $width - $radius, $height - $radius),
array(0, $rs_radius, 0, $height - $radius),
);
foreach ($positions as $pos) {
imagecopyresampled($corner, $img, $pos[0], $pos[1], $pos[2], $pos[3], $rs_radius, $rs_radius, $radius, $radius);
}
$lx = $ly = 0;
$i = -$rs_radius;
$y2 = -$i;
$r_2 = $rs_radius * $rs_radius;
for (; $i <= $y2; $i++) {
$y = $i;
$x = sqrt($r_2 - $y * $y);
$y += $rs_radius;
$x += $rs_radius;
imageline($corner, $x, $y, $rs_size, $y, $trans);
imageline($corner, 0, $y, $rs_size - $x, $y, $trans);
$lx = $x;
$ly = $y;
}
foreach ($positions as $pos) {imagecopyresampled($img, $corner, $pos[2], $pos[3], $pos[0], $pos[1], $radius, $radius, $rs_radius, $rs_radius);}
imagedestroy($corner);}
Открываем файл
components/users/frontend.php
находим
PHP:
@img_resize($uploadfile, $uploadavatar, $medw, $medh);
@img_resize($uploadfile, $uploadthumb, $smallw, $smallw);
после них вставляем
PHP:
@roundCorner ( $uploadavatar, 15 );
@roundCorner ( $uploadthumb, 15 );
Всё. Настройки можете редактировать под себя разумеется.