一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php實現圖片添加描邊字和馬賽克的方法

php實現圖片添加描邊字和馬賽克的方法

2020-08-21 12:35PHP之家 PHP教程

這篇文章主要介紹了php實現圖片添加描邊字和馬賽克的方法,通過自定義函數imagemask與imagetextouter實現圖片添加馬賽克與文字描邊的效果,非常具有實用價值,需要的朋友可以參考下

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

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

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

deep為模糊程度,數字越大越模糊。

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

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

如果不指定字體文件,則使用gd的內部字體。根據 php 所使用的 gd 庫的不同,如果 fontfile 沒有以 ‘/'開頭,則 ‘.ttf' 將被加到文件名之后并且會搜索庫定義字體路徑。

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

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

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

color 是十六進制的#rrggbb格式的顏色,如#ff0000為紅色。

outercolor 描邊顏色,十六進制的#rrggbb格式。

復制代碼 代碼如下:
<?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);
?>

 

運行效果如下圖所示:

php實現圖片添加描邊字和馬賽克的方法

 

復制代碼 代碼如下:

<?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的發光效果相同
                /*
                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", '新年快樂', '#ffffff');
imagetextouter($im, 2, 10, 30, '#ffff00', "", 'hello, world!' , '#103993');
imagepng($im);
imagedestroy($im);
?>

 

希望本文所述對大家的PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久www免费人成高清 | 日本福利片国产午夜久久 | 国产精品久久久久久久久齐齐 | 国内精品91久久久久 | 好 舒服 好 粗 好硬免费视频 | 高清视频一区二区三区 | 无码中文字幕av免费放 | xxxx俄罗斯大白屁股 | 日韩欧美高清 | 国产精品麻豆 | 亚洲H成年动漫在线观看不卡 | 18日本xxxxxxⅹxx96| 日本xnxnxnxnxn护士 | 动漫美女被褥吸奶漫画漫画 | 亚洲天堂网在线观看视频 | dyav午夜片 | 日本sss在线高清观看 | 我和寂寞孕妇的性事 | 午夜国产精品福利在线观看 | 3p文两男一女办公室高h | 精品国产成人 | 亚洲日本免费 | 午夜伦理电影在线观免费 | 韩国三级2020 | 精品AV综合导航 | 日本免费一区二区三区四区五六区 | 好大好猛好爽好深视频免费 | 公园暴露娇妻小说 | 免看一级a一片成人123 | 男生和女生艹逼 | 亚洲国产在线99视频 | 色中文网| 天天操精品 | 亚洲国产区男人本色在线观看欧美 | 放荡护士玩3p口述 | 四虎影视4hu最新地址在线884 | 91精品婷婷国产综合久久8 | 射逼网站| 美女被免费视频 | 色图片小说| 亚洲天堂精品视频 |