вторник, 30 августа 2011 г.

Скругление углов картинки средствами php

function AoElipse($AoEKey, $width=40, $height=40)
{
    /*
      $width - ширина картинки
      $height - высота картинки

      коды углов:
      1 - левый верхний
      2 - правый верхний
      3 - правый нижний
      4 - левый нижний
     */

    //создаем картинку

    $img = imageCreate($width, $height); //создаем картинку
    $white = imageColorAllocate($img, 255, 255, 255); //определяем белый цвет
    //imageFill($img, 1, 1, $white);//закрашиваем картинку белым цветом
    //нарисуем элипс

    switch ($AoEKey)
    {
        case 1: $s = 180;
            $e = 270;
            $x = $width - 1;
            $y = $height;
            break;

        case 2: $s = 270;
            $e = 0;
            $x = -1;
            $y = $height;
            break;

        case 3: $s = 0;
            $e = 90;
            $x = -1;
            $y = 0;
            break;

        case 4: $s = 90;
            $e = 180;
            $x = $width - 1;
            $y = 0;
            break;
    }
    // $s - начальный угол в градусах
    // $e - конечный угол в градусах
    // $x - координата X описываемого прямоугольника
    // $y - координата Y описываемого прямоугольника
    $w = $width * 2; //ширина описываемого прямоугольника
    $h = $height * 2; //высота описываемого прямоугольника
    $black = imageColorAllocate($img, 0, 0, 0); //определим цвет линии элипса
    imageArc($img, $x, $y, $w, $h, $s, $e, $black); //рисуем элипс
    imageFill($img, $width / 2, $height / 2, $black); //закрашиваем элипс

    imageColorTransparent($img, $black); //сделаем прозрачным черный цвет

    return $img; //возвращаем картинку
}

function MElipse($img, $Ew=40, $Eh=40)
{
    $width = imageSX($img);
    $height = imageSY($img);

    $imgE = AoElipse(1, $Ew, $Eh);
    imageCopyResized($img, $imgE, 0, 0, 0, 0, $Ew, $Eh, $Ew, $Eh);
    $imgE = AoElipse(2, $Ew, $Eh);
    imageCopyResized($img, $imgE, $width - $Ew, 0, 0, 0, $Ew, $Eh, $Ew, $Eh);
    $imgE = AoElipse(3, $Ew, $Eh);
    imageCopyResized($img, $imgE, $width - $Ew, $height - $Eh, 0, 0, $Ew, $Eh, $Ew, $Eh);
    $imgE = AoElipse(4, $Ew, $Eh);
    imageCopyResized($img, $imgE, 0, $height - $Eh, 0, 0, $Ew, $Eh, $Ew, $Eh);

    return $img;
}

//пример использования:
//
//$img=ImageCreatefromJpeg($img_path);
//$img=MElipse($img,5,5);
//
//imagejpeg($img, $img_path);

Комментариев нет:

Отправить комментарий