一文看懂 GD2庫

文章目錄

      • 一、 GD2簡介
        • 1、 驗證碼(實際上是一個img)
      • 二、 GD2庫使用步驟
        • 2.1添加擴展
        • 2.2修改php配置文件
        • 2.3重啟服務
      • 三、 GD2里面的常用方法
        • 3.1 imagecreate
        • 3.2 imagecolorallocate
        • 3.3 imagefill
        • 3.4 輸出圖像資源
        • 3.5創建真彩畫布
        • 3.6在圖像中寫文字
          • 3.6.1imagettftext
          • 3.6.2imagestring
        • 3.7在圖像中寫橫線
        • 3.8在圖像中畫矩形
        • 3.9在圖像中畫弧度
      • 四、 驗證碼案例
        • 4.1驗證碼第一版
        • 4.2回顧生成四位隨機數
        • 4.3驗證碼第二版
        • 4.4點擊按鈕切換圖片
        • 4.5點擊按鈕切換驗證碼
      • 五、 水印圖

一、 GD2簡介

php語言本身沒辦法直接操作圖片,但是需要安裝一些擴展庫,有很多,但是常用的是GD2庫。
GD2庫實際上主要用在下面幾個方面:

1、 驗證碼(實際上是一個img)

美食杰的注冊頁
在這里插入圖片描述

2、 水印圖
在這里插入圖片描述

3、 縮略圖
在這里插入圖片描述

二、 GD2庫使用步驟

2.1添加擴展

我們的phpstudy集成環境下是默認安裝了php_gd2.dll文件,如果沒有自己百度搜索一下,把下載的dll文件放在你的對應版本的ext目錄下。
在這里插入圖片描述

2.2修改php配置文件

我們直接在目錄下找到配置文件雙擊打開
在這里插入圖片描述

或者通過phpstudy打開
在這里插入圖片描述

按住ctrl+f搜索extension=php_gd2.dll文件,把前面的分號去掉
在這里插入圖片描述

2.3重啟服務

在這里插入圖片描述

三、 GD2里面的常用方法

3.1 imagecreate

imagecreate(寬,高)是新建一個基于調色板的圖像,本質上就是創建一個畫布。默認是透明色

3.2 imagecolorallocate

imagecolorallocate(畫布資源,red,gren,blue);
注意紅綠藍是RGB的色值,每一個取值范圍是0-255

3.3 imagefill

imagefill(畫布資源,x軸坐標,用軸坐標,填充的顏色)
注意圖像的左上角默認是0,0點

3.4 輸出圖像資源

imagepng()是輸出png格式圖像到瀏覽器
imagejpeg()是輸出jpeg格式圖像到瀏覽器
imagegif()是輸出gif格式圖像到瀏覽器
如果直接輸出是亂碼
在這里插入圖片描述

因為瀏覽器默認是解析成html標簽,不識別圖像,所以加上header頭識別

3.5創建真彩畫布

imagecreatetruecolor(寬,高)創建一個真彩的圖像資源,默認是黑色的

在這里插入圖片描述

imagepng可以設置兩個參數

在這里插入圖片描述

如果imagepng()設置了一個參數是把圖像資源直接在瀏覽器輸出,如果設置了第二個參數代表把圖片保存成自己定義的文件名。
在這里插入圖片描述

3.6在圖像中寫文字

3.6.1imagettftext

imagettftext — 用 TrueType 字體向圖像寫入文本
我們在自己的計算機c盤/windows/fonts/里面有各種內置的字體
在這里插入圖片描述

我們隨意復制一個文件放在自己的項目文件夾下面
在這里插入圖片描述

顯示效果如下:

在這里插入圖片描述

這個方法也可以輸出中文

在這里插入圖片描述

3.6.2imagestring

imagestring — 水平地畫一行字符串,輸中文會亂碼,只能輸出字符。
這個方法字符的左上角為0,0點,不用設置字體格式,默認使用內置字體
在這里插入圖片描述

總結如下:
1、
imagettftext不僅能輸出英文字符還能輸出中文
imagestring只能輸出英文,如果是中文是解析后的亂碼
2、imagettftext是文字的左小角為0,0點。
imagestring文字的左上角為0,0點
4、 imagettftext等加入字體文件格式,imagestring使用默認字體

3.7在圖像中寫橫線

imageline(圖像資源,開始點的x坐標,開始點的y坐標,結束點的x坐標,結束點的y坐標,線條顏色)
在這里插入圖片描述

3.8在圖像中畫矩形

imagerectangle(圖像資源,左上角的x和y坐標,右下角的x和y坐標,矩形顏色);
在這里插入圖片描述

3.9在圖像中畫弧度

在這里插入圖片描述

參數說明如下:
在這里插入圖片描述

4.0 imagecreatefrompng/jpeg/gif
在這里插入圖片描述

4.2getimagesize
在這里插入圖片描述

getimagesize()是返回的關于圖像大小以及類型相關信息的數組
第一個參數:寬
第二個參數:高
第三個參數:給出的是圖像的類型,返回的是數字,其中1 = GIF,2 = JPG,3 = PNG
最后一個參數:是圖像類型
4.2imagecopy
imagecopy(目標圖像資源,源圖像資源,放在目標位置的x和y坐標,原圖截取開始的x和y坐標,截取原圖的寬度和高度)

四、 驗證碼案例

4.1驗證碼第一版

4.2回顧生成四位隨機數

rand(開始數字,結束數字)會隨機生成一個開始到結束范圍內的數字
在這里插入圖片描述

4.3驗證碼第二版

在這里插入圖片描述

生成效果如下:
在這里插入圖片描述

然后我們生成隨機的顏色,修改如下:
在這里插入圖片描述

4.4點擊按鈕切換圖片

在這里插入圖片描述

4.5點擊按鈕切換驗證碼

因為瀏覽器有一個緩存機制,就是訪問同一個文件的時候就不會去給服務器發請求,從緩存里讀取,所以導致我們點擊按鈕的沒有作用,還是訪問的以前緩存的那個圖片,我們采取拼接參數的形式
在這里插入圖片描述

所以我們更改代碼如下:
在這里插入圖片描述

五、 水印圖

在這里插入圖片描述

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

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

相關文章

算法實踐--最小生成樹(Kruskal算法)

什么是最小生成樹(Minimum Spanning Tree) 每兩個端點之間的邊都有一個權重值,最小生成樹是這些邊的一個子集。這些邊可以將所有端點連到一起,且總的權重最小 下圖所示的例子,最小生成樹是{cf, fa, ab} 3條邊 Kruskal算法 用到上一篇中介紹的…

洽談 “會話技術” 純干貨趕緊收藏吧

文章目錄一、 HTTP協議二、 會話三、 cookie3.1概念和設置cookie3.2讀取cookie3.3設置cookie有效期3.4cookie是跨頁面的3.5刪除cookie3.6登錄案例3.7cookie特點四、 session4.1概念4.2設置session4.3獲取session4.4清除session4.5模擬購物車案例一、 HTTP協議 HTTP協議是Hyper…

[bzoj2729][HNOI2012]排隊 題解 (排列組合 高精)

Description 某中學有 n 名男同學,m 名女同學和兩名老師要排隊參加體檢。他們排成一條直線,并且任意兩名女同學不能相鄰,兩名老師也不能相鄰,那么一共有多少種排法呢?(注意:任意兩個人都是不同的…

詳解 正則表達式

文章目錄一、概念二、作用三、語法規則3.1定義規則3.2符號簡介3.3preg_match用法詳解3.4詳解元字符3.4.1 \d和[0-9]3.4.2 \D和[^0-9]3.4.3^和$3.4.4*代表出現0次或者多次3.4.5代表出現1次或者多次3.4.5?代表出現0次或者1次3.4.6{n}3.4.7{n,}3.4.8{n,m}3.4.9點號&…

Java:控制臺輸入車輛信息,將信息保存至數據庫中

程序功能:控制臺輸入車輛信息,將信息保存至數據庫中 程序代碼如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;i…

echars 3D地圖為區域自定義顏色

echars 3D地圖為區域自定義顏色問題延伸解決問題問題 根據項目需求,我們要將下面省級地圖中的個別市進行高亮(不同顏色)展示 延伸 首先跟大家介紹這個地圖的展示方式: 采用的是Vue框架中運用echarts地圖采用的是geo3D和scatt…

linux每日命令(31):tar命令

閱讀目錄(Content) 一.命令格式二. 命令功能三. 命令參數必要參數選擇參數四. 常見解壓、壓縮命令tar.gz.tar.gz 和 .tgz.bz2.tar.bz2.bz.tar.bz.Z.tar.Z.zip.rar五. 使用實例1:將文件全部打包成tar包2:查閱上述 tar包內有哪些文件3&#xff…

一文帶你吃透BFC

文章目錄面試高出場率什么是BFC觸發BFC的條件BFC的約束規則BFC可以解決的問題面試高出場率 在前端的面試中,經常會遇到BFC的問題,比如:說說你對BFC的理解、你在項目中運用到的BFC、BFC是什么、BFC的作用是什么。。。。 很多同學很懵逼&…

基于Python語言使用RabbitMQ消息隊列(一)

介紹 RabbitMQ 是一個消息中間人(broker): 它接收并且發送消息. 你可以把它想象成一個郵局: 當你把想要寄出的信放到郵筒里時, 你可以確定郵遞員會把信件送到收信人那里. 在這個比喻中, RabbitMQ 就是一個郵筒, 同時也是郵局和郵遞員 . 和郵局的主要不同…

爆贊程序猿開發軟件

VSCode 使用 IntelliSense 超越語法突出顯示和自動完成,它提供基于變量類型、函數定義和導入模塊的智能完成 直接從編輯器調試代碼。啟動或附加到您正在運行的應用程序并使用斷點、調用堆棧和交互式控制臺進行調試 與 Git 和其他 SCM 提供商合作從未如此簡單。查…

如果你在北京失業了,別怕,記得去領這筆錢!最少2034元/月!

人在江湖飄,哪能不挨刀 公司倒閉,老板走人,公司裁人 …… 就要被迫失業了 別怕! 如果你在北京失業了 記得去領這筆錢——失業保險金 每月最多有2143元 雖然錢不多,但能解燃眉之急 幫助你度過困難日子 重點全程網上就能…

真實詮釋程序員日常的二十四張圖【你中了幾個】

當你打開遺留代碼時 扒下來項目后改了一行代碼…… 程序員調試css樣式的時候 當你的try catch 不起作用 產品經理對你說要兼容IE 沒有ui給你提供大小設計的結果 沒吃透需求直接開發的你 程序員修復bug的真實處境 當你開始使用庫,但忘記閱讀文檔 產品經理告訴你這只是…

Git學習原版手稿

手稿誕生記 Git學習的時候難免會有遺忘然后往復學習查看的過程,所以就形成了這個學習的手稿,記錄了Git使用過程中的大部分命令,今天在清理的時候偶然看到了這些記錄,而且最近也在寫Git的使用教程,大致的學習線路也是按…

程序員首選編程電腦【火爆來襲】

作為一名程序員肯定會常用到一些編程軟件,所以需要設備的配置參數上不能太差,不僅是要以穩定強大輸出為基本,內存、音響、續航等方面也不可或缺。 直奔主題 如果你手里資金到位,那必須整一步到位——MacBook 對于這款大佬型筆記本…

201671010456-張瓊 實驗十四 團隊項目評審課程學習總結

博文簡要信息表 項目內容這個作業屬于哪個課程http://www.cnblogs.com/nwnu-daizh/這個作業的要求在哪里https://www.cnblogs.com/nwnu-daizh/p/11093584.html課程學習目標掌握軟件項目評審會流程,反思總結課程學習內容。任務一 驗收意見表GitHub倉庫地址https://gi…

強大的APIClound云修復——告別繁瑣的編譯打包流程

小編接到一項目的二期開發任務,拉下代碼開始熟悉大概的框架、技術、上線流程等前期工作,本app是通過vue技術進行開發,使用ui是 vant 庫,打包上線則是使用的 APIClound 平臺; 在我們的app上線后,如果我們改…

研究下貝塞爾曲線

今天研究了下貝塞爾曲線,感覺還是很有價值的。 這里貝塞爾曲線是幾個用法: 1.模擬曲線擬合。將折線找一個平滑的方案獲得曲線的效果。聯想可以獲知,可以作為工程設計的一種方式。 2.模擬拋物線和實際場景中的一些物理特性,即物理上…

你對ES6究竟了解多少?—— 有這一篇就夠用了

1. ES6相關概念(★★) 1.1 什么是ES6 ES 的全稱是 ECMAScript , 它是由 ECMA 國際標準化組織,制定的一項腳本語言的標準化規范。ES6 是ES2015以后的泛稱 1.2 為什么使用 ES6 ? 每一次標準的誕生都意味著語言的完善,功能的加強。JavaScrip…

科創板基礎知識

交易制度 1、上市前5個交易日不設將跌幅限制;其后漲跌幅限制為 20%; 2、單筆申報不小于 200股。 參考資料: 科創板圖文解讀 科創板投教長圖文系列(四):詳解科創板股票交易的特別規定 上交所投教&#xff1a…

0_0 保留字

引自《 JavaScript 權威指南》2.4 / P28 ~ 29 保留字 部分 保留字 JavaScript 把一些標識符拿出來用作自己的關鍵字。因此,就不能再在程序中把這些關鍵字用作標識符了: 保留字 Part1.txt123456breakdelete functionreturntypeofcasedoifswitchvarc…