php驗證碼函數 使用imagestring() imagefttext()設置字體大小

轉載路徑:http://hi.baidu.com/asdasd_cn/item/62977d1e26ca36e85e53b142


生成驗證碼圖片的兩個函數

第一個是用imagestring

? bool imagestring ? ?( resource $image ? , int $font ? , int $x ? , int $y ? , string $s ? , int $col ? )

? imagestring()col ? 顏色將字符串 s 畫到 image ? 所代表的圖像的 xy ? 坐標處(這是字符串左上角坐標,整幅圖像的左上角為 0,0)。如果 ? font 是 1,2,3,4 或 5,則使用內置字體。 ?

public function captcha1() {//生成驗證碼圖片Header("Content-type: image/PNG");$rand ="";for($i=0;$i<4;$i++){$rand.=dechex(rand(0,15));}$im = imagecreate(100,50); //制定圖片背景大小$black = ImageColorAllocate($im, 0,0,0); //設定三種顏色$white = ImageColorAllocate($im, 255,255,255);$gray = ImageColorAllocate($im, 200,200,200);for($i=0;$i<3;$i++){$te=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));}imagefill($im,0,0,$gray); //采用區域填充法,設定(0,0)while(($rand=rand()%100000)<10000);//將四位整數驗證碼繪入圖片$_SESSION['rand']=$rand;imagestring($im, 5, 30, 20, $rand, $te);// 用 col 顏色將字符串 s 畫到 image 所代表的圖像的 x,y 座標處(圖像的左上角為 0, 0)。//如果 font 是 1,2,3,4 或 5,則使用內置字體for($i=0;$i<200;$i++) //加入干擾象素{$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));imagesetpixel($im, rand()%100 , rand()%50 , $randcolor);}imageline($im,0,rand(0,100),100,rand(0,15),$randcolor);imageline($im,0,rand(0,100),100,rand(0,15),$randcolor);imageline($im,0,rand(0,100),100,rand(0,15),$randcolor);ImagePNG($im);ImageDestroy($im);}

第二個函數可根據根據字體庫設置大小Linux端的注意路徑

imagefttext — 使用 FreeType 2 字體將文本寫入圖像

? array imagefttext ? ?( resource $image ? , float $size ? , float $angle ? , int $x ? , int $y ? , int $color ? , string $fontfile ? , string $text ? [, array $extrainfo ?] )

//可以修改字體大小的驗證碼function captcha2($num=4,$size=20, $width=0,$height=0){   !$width && $width = $num*$size*4/5+5;   !$height && $height = $size + 10;   // 去掉了 0 1 O l 等   $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";   $code = '';   for ($i=0; $i<$num; $i++){   $code.= $str[mt_rand(0, strlen($str)-1)];   }   // 畫圖像   $im = imagecreatetruecolor($width,$height);   // 定義要用到的顏色   $back_color = imagecolorallocate($im, 235, 236, 237);   $boer_color = imagecolorallocate($im, 118, 151, 199);   $text_color = imagecolorallocate($im, mt_rand(0,200), mt_rand(0,120), mt_rand(0,120));   // 畫背景   imagefilledrectangle($im,0,0,$width,$height,$back_color);   // 畫邊框   imagerectangle($im,0,0,$width-1,$height-1,$boer_color);   // 畫干擾線   for($i=0;$i<5;$i++){   $font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));   imagearc($im,mt_rand(-$width,$width),mt_rand(-$height,$height),mt_rand(30,$width*2),mt_rand(20,$height*2),mt_rand(0,360),mt_rand(0,360),$font_color);   }   // 畫干擾點   for($i=0;$i<50;$i++){   $font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));   imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$font_color);   }   // 畫驗證碼   @imagefttext($im, $size , 0, 5, $size+3, $text_color, 'c://WINDOWS//Fonts//simsun.ttc',$code);   header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");   header("Content-type: image/png");   imagepng($im);imagedestroy($im);}
附:

Linux-debian 字體默認路徑:/usr/share/fonts/truetype/ttf-dejavu/

考慮到程序的可移植性,在程序目錄中新建字體目錄fonts來使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276273.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

提取地圖中道路_非機器學習方法·從遙感影像中提取道路

本科低年級曾經做過一個提取道路線的題目。提供的數據&#xff1a;老師給我們了一幅學校周邊地區的影像&#xff0c;包括RGBInfrared四個波段。一開始使用的方法&#xff1a;當時尚青澀的我和小伙伴們一起使用KMEANS、閾值分割等等方法試圖將那道路從影像中分離出來。遇到的問題…

圖片尺寸自適應

圖片尺寸自適應 οnlοad"javascript:if(this.height>this.width){this.height100}else{this.width100} 轉載于:https://www.cnblogs.com/TangZhongxin/archive/2009/12/14/3942483.html

第一章知識點

第一章知識點 一&#xff1a;SQL語言 1&#xff0c;結構化查詢語言&#xff0c;是關系數據庫的標準語言 2&#xff0c;分類&#xff1a; 2.1&#xff1a;數據操作語言&#xff1a;DML&#xff1b;包括&#xff1a;即增刪查改&#xff1b;insert&#xff0c;update&#xff0c;d…

2021年,推薦這幾個優質公眾號碎片化學習

2021 年了&#xff0c;前端技術日新月異&#xff0c;發展迅速&#xff0c;前端公眾號是不是感覺越來越多了&#xff1f;在著辭舊迎新之際&#xff0c;這里盤點幾個前端開發工程師 2021 年必須關注的優質公眾號&#xff0c;希望對你有所幫助。大家可以像我一樣&#xff0c;利用碎…

php 處理表單里面的 單雙引號

轉載鏈接&#xff1a;http://developer.51cto.com/art/200911/165392.htm 我們今天要向大家介紹的是PHP magic_quotes_gpc的具體使用方法。大家都知道在PHP中一個特殊的函數魔術函數&#xff0c;它在引用的過程中只有在傳遞$_GET,$_POST,$_COOKIE時才會發生作用。 PHP函數preg…

阿里云插件新版發布,多特性助力提升開發者體驗

好消息&#xff01;阿里云 Cloud Toolkit 新版本于近日正式發布&#xff0c;推出了面向 IntelliJ 和 Eclipse 兩個平臺的新款插件&#xff0c;多個重大特性&#xff0c;持續提升開發者體驗&#xff0c;本文將帶大家快速預覽該新版本。 本文只挑選下面三個重大特性進行解讀&…

海鷗表表帶太長了怎么拆_表帶安裝,表帶太長了,怎么拆解和安裝?

表帶太長了&#xff0c;怎么拆解和安裝&#xff1f;1、準備拆表帶前請看清楚表帶背面的箭頭。2、有箭頭的帶粒是可拆卸的。3、擰松拆帶器把手&#xff0c;將表帶放入表槽&#xff0c;并保持拆帶器的鋼針對準針孔&#xff0c;如圖二&#xff0c;且拆帶器的鋼針順著箭頭的指示方向…

python類庫31[文件和目錄os+os.path+shutil]

一 常用函數 os模塊 os.sep 表示默認的文件路徑分隔符&#xff0c;windows為\, linux為/os.walk(spath): 用來遍歷目錄下的文件和子目錄os.listdir(dirname)&#xff1a;列出dirname下的目錄和文件os.mkdir() &#xff1a; 創建目錄os.makedirs(): 創建目錄&#xff0c;包含中間…

上一輪中獎信息公布

大家好&#xff0c;我是若川&#xff0c;抽獎活動其實挺耗時耗力的&#xff0c;尤其是留言和在看抽獎。比如我這篇文章寫完就已經23:50了。特別想說的是&#xff1a;有126人點擊了在看&#xff0c;但我的好友展示只有93人在看。說明還有30多人點擊了在看&#xff0c;但忘記加我…

css判斷不同分辨率顯示不同寬度布局實現自適應寬度

轉載鏈接&#xff1a;http://www.jb51.net/css/151312.html 點評&#xff1a;CSS判斷不同分辨率瀏覽器&#xff08;顯示屏幕&#xff09;顯示不同寬度布局CSS3技術支持IE6到IE8。將用到css3 media樣式進行判斷&#xff0c;但IE9以下版本不支持CSS3技術&#xff0c;這里DIVCSS5給…

安卓相機 高幀率_Android MediaCodec和攝像頭:如何實現更高的幀速率從相機獲取幀原始數據?...

攝像機API有兩個不同的參數用于控制幀速率&#xff1a;setPreviewFrameRate,它采用單幀速率值并且不推薦使用,setPreviewFpsRange采用一系列FPS值,是當前推薦的控制.單FPS設置控制不充分的原因是,有時您希望相機在黑暗條件下降低幀速率以使取景器保持明亮(靜態相機取景器就是這…

開發、測試與QA的區別以及其他

覺得這個比喻比較新穎&#xff0c;覺得蠻有意思的&#xff0c;故轉自過來。 最近部門中有同事在問這個問題&#xff0c;我想應該還是有滿多人對這三個角色的定位還不是很清楚&#xff0c;因此就這三個角色談談我個人的認識。 網絡上關于這三種角色的定義已經夠多&#xff0c;在…

CentOS7Jenkins安裝

2019獨角獸企業重金招聘Python工程師標準>>> CentOS7Jenkins安裝 2017年05月07日 20:20:32 申明霜 閱讀數&#xff1a;13945 版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/sms15732621690/article/details/713…

2020 全球 JS 現狀調查報告

大家好&#xff0c;我是若川。偷偷告訴你&#xff0c;今天推文的第二條是在我的公眾號回復「網盤」免費領取百度網盤會員&#xff0c;歡迎大家分享轉發。給大家分享一篇好文&#xff0c;往期類似好文&#xff1a;2020 前端技術發展回顧2020年大前端技術趨勢解讀以下是正文&…

ie兼容響應式布局的實現總結 和 針對ie瀏覽器的CSS

參考鏈接&#xff1a;http://zhidao.baidu.com/link?urlbQioDKMnG_eQoE6dCxzd2hPtMyiB7phu6hBdOupn1Pjk1hV-ItXFZS5GDUBoH5qrfi9LXkUoSciXTiGN36G6LK 參考鏈接&#xff1a;http://blog.sina.com.cn/s/blog_601b97ee0101aszo.html ie瀏覽器hack .demo {padding:10px;padding:9…

group by 保留哪一條數據_使用R語言繪制一維數據統計圖總結

加載數據 繪制莖葉圖 繪制直方圖 繪制概率密度曲線 繪制小提琴圖 繪制箱線圖 繪制小提琴圖箱線圖 集中趨勢統計 分散程度 apply的使用加載數據模擬數據下載library(tidyverse) cjb <- read.csv("/home/wy/Downloads/cjb.csv",header TRUE,stringsAsFactors FALS…

npm安裝和Vue運行

一、開始&#xff1a; 下載地址&#xff1a;http://nodejs.cn/download/ 下載安裝&#xff1a; 直到 二、打開CMD,檢查是否正常 在安裝目錄里新增兩個文件夾 然后運行命令&#xff1a;如下圖&#xff1a; npm config set prefix "D:\InstallSoftWare\nodejs\node_global&q…

Scott 32 歲前端年終總結,探尋另一種可能

今年一年都是飛快 這 10 年編程好時光&#xff0c;花費在不經意間&#xff0c;而立的第三年也即將用完&#xff1a;23 到 26 歲&#xff0c;花在了阿里&#xff0c;從入門到職業迷茫&#xff0c;27 到 29 歲&#xff0c;花在了創業&#xff0c;從熱血到倒閉還錢&#xff0c;30 …

跨頁數據傳遞的兩種方式

選擇具有PostBackUrl屬性的三個控件Button、LinkButton、ImageButton。PostBackUrl屬性的值就是投遞的頁面URL。 要在接收頁面按對象的方式接收投遞頁面的表單中的值有兩種方式&#xff1a; 1、PreviousPage.FindControl(“控件變量名”)&#xff0c;這個方法返回的是Control類…

linux批量殺進程_Linux下批量殺JAVA進程

在工作中經常需要停止JAVA進程&#xff0c;停止時間也比較長&#xff0c;那么有時候因為一些情況&#xff0c;需要把 linux 下JAVA所有進程kill 掉&#xff0c;又不能用killall 直接殺掉某一進程名稱包含的所有運行中進程(我們可能只需要殺掉其中的某一類或運行指定參數命令的進…