最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php實(shí)現(xiàn)圖片添加描邊字和馬賽克的方法

 更新時(shí)間:2014年12月10日 15:13:11   投稿:shichen2014  
這篇文章主要介紹了php實(shí)現(xiàn)圖片添加描邊字和馬賽克的方法,通過(guò)自定義函數(shù)imagemask與imagetextouter實(shí)現(xiàn)圖片添加馬賽克與文字描邊的效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php實(shí)現(xiàn)圖片添加描邊字和馬賽克的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

馬賽克:void imagemask ( resource image, int x1, int y1, int x2, int y2, int deep)

imagemask() 把坐標(biāo) x1,y1 到 x2,y2(圖像左上角為 0, 0)的矩形區(qū)域加上馬賽克。

deep為模糊程度,數(shù)字越大越模糊。

描邊:void imagetextouter ( resource image, int size, int x, int y, string color, string fontfile, string text, string outercolor)

imagetextouter() 將字符串 text 畫(huà)到 image 所代表的圖像上,從坐標(biāo) x,y(左上角為 0, 0)開(kāi)始,顏色為 color,邊框所使用的顏色為 outercolor,使用 fontfile 所指定的 truetype 字體文件。

如果不指定字體文件,則使用gd的內(nèi)部字體。根據(jù) php 所使用的 gd 庫(kù)的不同,如果 fontfile 沒(méi)有以 ‘/'開(kāi)頭,則 ‘.ttf' 將被加到文件名之后并且會(huì)搜索庫(kù)定義字體路徑。

如果指定了字體文件,由 x,y 所表示的坐標(biāo)定義了第一個(gè)字符的基本點(diǎn)(大概是字符的左下角)。否則 x,y 定義了第一個(gè)字符的右上角。

fontfile 是想要使用的 truetype 字體的文件名。

text 是文本字符串,可以包含 utf-8 字符序列(形式為:{)來(lái)訪問(wèn)字體中超過(guò)前 255 個(gè)的字符。

color 是十六進(jìn)制的#rrggbb格式的顏色,如#ff0000為紅色。

outercolor 描邊顏色,十六進(jìn)制的#rrggbb格式。

復(fù)制代碼 代碼如下:
<?php
/**
 * gd image mask
 *
 * @copyright ugia.cn
 
 */
function imagemask(&$im, $x1, $y1, $x2, $y2, $deep)
{
    for($x = $x1; $x < $x2; $x += $deep)
    {
        for ($y = $y1; $y < $y2; $y += $deep)
        {
            $color = imagecolorat ($im, $x + round($deep / 2), $y + round($deep / 2));
            imagefilledrectangle ($im, $x, $y, $x + $deep, $y + $deep, $color);
        }
    }
}
//馬賽克用法示例:
header("content-type: image/png");
$im = imagecreatefromjpeg("test.jpg");
imagemask($im, 57, 22, 103, 40, 8);
imagepng($im);
imagedestroy($im);
?>

運(yùn)行效果如下圖所示:

復(fù)制代碼 代碼如下:
<?php
/**
 * gd image text outer
 *
 * @copyright ugia.cn
 
 */
function imagetextouter(&$im, $size, $x, $y, $color, $fontfile, $text, $outer)
{
    if (!function_exists('imagecolorallocatehex'))
    {
        function imagecolorallocatehex($im, $s)
        {
           if($s{0} == "#") $s = substr($s,1);
           $bg_dec = hexdec($s);
           return imagecolorallocate($im,
                       ($bg_dec & 0xff0000) >> 16,
                       ($bg_dec & 0x00ff00) >>  8,
                       ($bg_dec & 0x0000ff)
                       );
        }
    }
    $ttf = false;
    if (is_file($fontfile))
    {
        $ttf = true;
        $area = imagettfbbox($size, $angle, $fontfile, $text);
        $width  = $area[2] - $area[0] + 2;
        $height = $area[1] - $area[5] + 2;
    }
    else
    {
        $width  = strlen($text) * 10;
        $height = 16;
    }
    $im_tmp = imagecreate($width, $height);
    $white = imagecolorallocate($im_tmp, 255, 255, 255);
    $black = imagecolorallocate($im_tmp, 0, 0, 0);
    $color = imagecolorallocatehex($im, $color);
    $outer = imagecolorallocatehex($im, $outer);
    if ($ttf)
    {
        imagettftext($im_tmp, $size, 0, 0, $height - 2, $black, $fontfile, $text);
        imagettftext($im, $size, 0, $x, $y, $color, $fontfile, $text);
        $y = $y - $height + 2;
    }
    else
    {
        imagestring($im_tmp, $size, 0, 0, $text, $black);
        imagestring($im, $size, $x, $y, $text, $color);
    }
    for ($i = 0; $i < $width; $i ++)
    {
        for ($j = 0; $j < $height; $j ++)
        {
            $c = imagecolorat($im_tmp, $i, $j);
            if ($c !== $white)
            {
                imagecolorat ($im_tmp, $i, $j - 1) != $white || imagesetpixel($im, $x + $i, $y + $j - 1, $outer);
                imagecolorat ($im_tmp, $i, $j + 1) != $white || imagesetpixel($im, $x + $i, $y + $j + 1, $outer);
                imagecolorat ($im_tmp, $i - 1, $j) != $white || imagesetpixel($im, $x + $i - 1, $y + $j, $outer);
                imagecolorat ($im_tmp, $i + 1, $j) != $white || imagesetpixel($im, $x + $i + 1, $y + $j, $outer);
                // 取消注釋,與fireworks的發(fā)光效果相同
                /*
                imagecolorat ($im_tmp, $i - 1, $j - 1) != $white || imagesetpixel($im, $x + $i - 1, $y + $j - 1, $outer);
                imagecolorat ($im_tmp, $i + 1, $j - 1) != $white || imagesetpixel($im, $x + $i + 1, $y + $j - 1, $outer);
                imagecolorat ($im_tmp, $i - 1, $j + 1) != $white || imagesetpixel($im, $x + $i - 1, $y + $j + 1, $outer);
                imagecolorat ($im_tmp, $i + 1, $j + 1) != $white || imagesetpixel($im, $x + $i + 1, $y + $j + 1, $outer);
                */
            }
        }
    }
    imagedestroy($im_tmp);
}

//用法示例:
header("content-type: image/png");
$im = imagecreatefromjpeg("bluesky.jpg");
$white = imagecolorallocate($im, 255,255,255);
imagetextouter($im, 9, 10, 20, '#000000', "simsun.ttc", '新年快樂(lè)', '#ffffff');
imagetextouter($im, 2, 10, 30, '#ffff00', "", 'hello, world!' , '#103993');
imagepng($im);
imagedestroy($im);
?>

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

大城县| 上蔡县| 长宁区| 广宗县| 玉门市| 天门市| 麦盖提县| 旬阳县| 长顺县| 宜君县| 陵川县| 商丘市| 顺昌县| 乐亭县| 娱乐| 龙泉市| 滁州市| 滦平县| 沈阳市| 娱乐| 山东省| 盘山县| 合江县| 巴东县| 武平县| 乐都县| 潜江市| 漠河县| 隆德县| 哈巴河县| 庄河市| 垫江县| 青岛市| 永和县| 博罗县| 崇文区| 成都市| 综艺| 绿春县| 钟祥市| 玛曲县|