中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

php圖形圖像處理基礎(chǔ)

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用
php圖形圖像處理基礎(chǔ),包括驗(yàn)證碼的生成,以及圖片加水印等操作。
<?php
/*GD庫簡介
GD指的是Graphic Device,php的GD庫是用來處理圖形的擴(kuò)展庫,通過GD庫提供的一系列API,可以對(duì)圖像進(jìn)行處理或者直接生成新的圖片
php除了能進(jìn)行文本處理以外,通過GD庫,可以對(duì)JPG、PNG、GIF、SWF等進(jìn)行處理。GD庫常用在圖片加水印,驗(yàn)證碼聲稱等方面
php默認(rèn)已經(jīng)生成了GD庫,只需要在安裝的時(shí)候開啟就行了*/
header("content-type:image/png");
#新建一個(gè)畫布,通過imagecreatetruecolor函數(shù)可以創(chuàng)建一個(gè)真彩色的空白圖片
$img = imagecreatetruecolor(100, 100);
$red = imagecolorallocate($img,0xFF,0x00,0x00);
imagefill($img,0,0,$red);
imagepng($img);
$imagedestroy($img);
/*繪制線條
GD庫中對(duì)畫筆所用的顏色,需要通過imagecolorallcoate函數(shù)進(jìn)行分配,通過參數(shù)設(shè)定RGB的顏色值來確定畫筆的顏色*/
$red = imagecolorallocate($img,0xFF,0x00,0x00);
//然后我們可以通過調(diào)用繪制線段函數(shù)imageline進(jìn)行線條的繪制,通過指定起點(diǎn)跟終點(diǎn)來最終得到線條
imageline($img,0,0,100,100,$red)
//繪制好后,通過header與imagepng進(jìn)行圖像輸出
header("content-type:image/png")
imagepng($img)
//最后可以調(diào)用imagedestroy來釋放該圖片占用的內(nèi)存
imagedestroy($img)
/*在圖像中繪制文字
與繪制線條類似,首先要新建一個(gè)圖片與初始化顏色
然后使用imagestring函數(shù)來進(jìn)行文字的繪制,這個(gè)函數(shù)的參數(shù)很多
imagestring(resource $image,int $font,int $x,int $y,string $s,int $col)
可以通過$font來設(shè)置字體,x,y來設(shè)置文字顯示的位置,$s是要繪制的文字,$col是文字的顏色*/
imagestring($img,5,0,0,"hello world",$red);
/*生成圖像驗(yàn)證碼
簡單的驗(yàn)證碼其實(shí)就是在圖片中輸出了幾個(gè)字符,通過上面的imagestring函數(shù)就能實(shí)現(xiàn)
但是處理上,為了使驗(yàn)證碼更加安全,防止其他程序自動(dòng)識(shí)別,因此常常需要對(duì)驗(yàn)證碼進(jìn)行一些干擾處理,通常會(huì)采用繪制一些噪點(diǎn)
干擾線段,對(duì)輸出的字符進(jìn)行傾斜/扭曲等操作
可以使用imagesetpixel繪制點(diǎn)來實(shí)現(xiàn)噪點(diǎn)干擾,但是只繪制一些點(diǎn)的作用不但,因此這里常常會(huì)使用循環(huán)等進(jìn)行隨機(jī)繪制*/
$img = imagecreatetruecolor(100,40);
$black = imagecolorallocate($img,0x00,0x00,0x00);
$green = imagecolorallocate($img,0x00,0xFF,0x00);
$white = imagecolorallocate($img,0xFF,0x00,0x00);
imagefill($img,0,0,$white);
$code = '';
for($i = 0;$i < 4;$i++){
$code .=rand(0,9);
}
imagestring($img,5,10,10,$code,$black);
for($i = 0 ; $i < 50 ; $i++){
imagesetpixel($img, rand(0,100), rand(0,100), $black);
imagesetpixel($img,rand(0,100),rand(0,100),$green);
}
header("content-type:image/png");
imagepng($img);
imagedestroy($img);
/*給圖片加水印
給圖片加水印的方法有兩種,一種是在圖片上加上一個(gè)字符串,另一種是在圖片上加上一個(gè)logo或者其他的圖片
因?yàn)槭且呀?jīng)存在的圖片,可以直接從已經(jīng)存在的圖片中建立畫布,通過imagecreatefromjpeg可以直接從圖片文件創(chuàng)建圖像*/
$img = imagecreatefromjpeg($filename);
/*創(chuàng)建圖像對(duì)象以后,我們就可以通過前面的GD函數(shù),繪制字符串到圖像上,如果要加的水印是一個(gè)logo圖片,那么就需要在建立一個(gè)圖像對(duì)象
然后通過GD函數(shù)imagecopy將logo的圖像復(fù)制到源圖像中*/
$logo = imagecreatefrompng($filename);
imagecopy($img,$logo,15,15,0,0,$width,$height)
//將logo圖片復(fù)制到源圖片上以后,將加水印后的圖片輸出保存就完成了加水印處理
//這里僅僅是為了案例需要準(zhǔn)備一些素材圖片
$url = 'http://www.stchat.cn/data/attachment/forum/201506/12/100759pidbdaydh8dy7iby.jpg';
$content = file_get_contents($url);
$filename = 'tmp.jpg';
file_put_contents($filename, $content);
$url = '';
file_put_contents('logo.png', file_get_contents($url));
//開始添加水印操作
$im = imagecreatefromjpeg($filename);
$logo = imagecreatefrompng('logo.png');
$size = getimagesize('logo.png');
imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); 
header("content-type: image/jpeg");
imagejpeg($im);
?>

標(biāo)簽: 安全

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:php模擬post請(qǐng)求發(fā)送文件代碼

下一篇:mydumper備份數(shù)據(jù)庫腳本