Прозрачные закругленные углы в PHP - PullRequest
2 голосов
/ 16 ноября 2010

Можно ли создавать прозрачные углы для изображения на лету с помощью PHP?Я думаю, что это было бы возможно, но мне не хватает функции, которая сохраняла бы альфа-значения при копировании изображения.

Моя идея состояла в том, чтобы создать изображение такой же ширины и высоты, а затем применить прозрачные углы, нозатем мне нужно сохранить альфа-канал и просто скопировать изображение на эту маску, оставив прозрачным все еще прозрачный, но цвета изменились на скопированное изображение (или наоборот, наложите маску на изображение).

Возможно ли это сделатьи какие команды для этого, если таковые имеются?

Обновление: Спасибо за помощь с этим.Это было некоторое время назад, и я забыл, но если кто-нибудь сталкивается с этим вопросом, чтобы найти решение, просто посетите этот: http://www.pc -siete.g6.cz / galery.html .Я сделал функции для градиента, радиального градиента, а также закругленных углов, так что не стесняйтесь использовать :).Я не использую это на своей веб-странице, но хорошо, что они подготовлены.

Почему-то в скачанном файле была только реклама.Теперь он хранится внутри zip и загружается правильно.

Ответы [ 4 ]

2 голосов
/ 16 ноября 2010

Насколько я знаю, для этого нет встроенной функции.Однако вы можете создать его самостоятельно по следующим направлениям:

function imageapplyroundedcorners(&$img,$radius) {
    // for each corner
        // loop through pixels between corner and (corner +- radius)
            // if distance between pixel and radius > radius, make transparent
            // elseif distance > radius-1 make partially transparent (for antialiasing)
}
1 голос
/ 04 марта 2011

Вместо того, чтобы заново изобретать колесо, используйте PHP thumbnailer , который сделает все за вас:

require 'Thumbnailer.php';

$th=new Thumbnailer("photo.jpg");
$th->thumbFixed(120,90)->round()->save("thumb.jpg");
1 голос
/ 15 февраля 2011

Я только что создал эту функцию, используя ImageMagick в PHP, которая делает именно то, что я хотел. Вам необходимо установить константу TEMP_DIR и иметь исполняемый файл convert на вашем пути выполнения.

function png_corners($image, $r = 12)
{
    //Dump out the image as a PNG file.
    $tmp_file = tempnam(TEMP_DIR, "image") . ".png";
    imagepng($image, $tmp_file);

    //Final image file.
    $tmp_out_file = tempnam(TEMP_DIR, "out") . ".png";

    $x = imagesx($image);
    $y = imagesy($image);

    $cmd = "convert -size {$x}x{$y} xc:none -fill white -draw 'roundRectangle 0,0, {$x} ,{$y}, {$r}, {$r}' {$tmp_file} -compose SrcIn -composite {$tmp_out_file}";
    exec($cmd);

    header("Content-Type: image/png");
    $contents = file_get_contents($tmp_out_file);
    echo $contents;
    exit;
}
0 голосов
/ 16 ноября 2010

См. Ссылку ImageMagick . Да, все, что вы описываете, возможно, все инструменты есть.

...