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

利用PHP自動(dòng)生成印有用戶信息的名片

 更新時(shí)間:2016年08月01日 09:31:02   投稿:daisy  
對(duì)于日常照片的處理場(chǎng)景,通常我們的選擇都是利用手機(jī)上的眾多P圖軟件。使用它們就可以輕松便捷的實(shí)現(xiàn)添加文字的功能。而作為碼農(nóng)的我們,當(dāng)某一天我們需要在編寫的網(wǎng)頁(yè)應(yīng)用里添加這一功能時(shí),我們?cè)摾煤畏N語(yǔ)言和工具來(lái)實(shí)現(xiàn)這一目標(biāo)呢? 下面跟小編一起來(lái)看看。

前言

無(wú)論是自己要在精心P過(guò)的自拍上添加個(gè)性文字,或者是攝影愛好者要在拍攝的作品里添加水印,亦或是在網(wǎng)頁(yè)或者移動(dòng)應(yīng)用中實(shí)時(shí)生成文字和圖片的組合,我們都需要找到一個(gè)合適且靠譜的方法來(lái)將圖片和文字完美的結(jié)合在一起。

所以,“最好的編程語(yǔ)言”PHP及其GD庫(kù)就給我們提供了這樣一套簡(jiǎn)單且高效的解決方案。

我知道,這時(shí)候有個(gè)實(shí)例才是最好的~ 下面就讓我來(lái)舉個(gè)簡(jiǎn)單的栗子!

目標(biāo)

將用戶在網(wǎng)頁(yè)應(yīng)用中輸入的個(gè)人信息與圖片結(jié)合,生成一張印有用戶信息的名片。

效果

1 預(yù)設(shè)一張圖片,作為名片背景


名片背景

2 用戶信息輸入


信息輸入

3 名片生成(點(diǎn)擊Continue之后)


名片生成

步驟

在一切開始之前,請(qǐng)使用phpinfo() command來(lái)確認(rèn)GD庫(kù)已安裝。

首先,我們要做的事情很簡(jiǎn)單,新建一個(gè)PHP文件,就叫它main.php吧。

在main.php中,理論上我們需要以下幾行代碼(本代碼基于CakePHP 3):

<?php
//創(chuàng)建一個(gè)表單提供用戶輸入功能
echo $this->Form->create();

//只保留value屬性,其他屬性已省略
echo $this->Form->input(
'First Name',['value' => $firstname, '...' => '...', ...]);
echo $this->Form->input(
'Last Name',['value' => $lastname, '...' => '...', ...]);
echo $this->Form->input(
'City',['value' => $city, '...' => '...', ...]);
echo $this->Form->input(
'State',['value' => $state, '...' => '...', ...]);

/*
* 將img標(biāo)簽指向一個(gè)叫做image.php的PHP文件。 
* 所有的用戶輸入信息將以URL的形式保存在img標(biāo)簽的src屬性中, 
* 在表格提交后即可被image.php通過(guò)GET獲取。
* 所有變量已通過(guò)PHP自帶strtoupper函數(shù)轉(zhuǎn)換為大寫。
*/
echo $this->Html->image("image.php?first=".strtoupper($firstname)."&last=".strtoupper($lastname).
"&location=".strtoupper($city)." ".strtoupper($state), ['fullBase' => true]);
/*
* 上面的代碼相當(dāng)于:
* <img src="image.php?first=名&last=姓&location=城市" />
*/

//表單提交
echo $this->Form->button('CONTINUE', ['type' => 'submit']); 

//關(guān)閉表單
$this->Form->end();

接下來(lái),就是創(chuàng)建Where amazing happens的image.php了。包括圖片設(shè)置,獲取用戶信息,將文字信息添加到圖片上,所有的一切都將在這一步完成。

讓我們通過(guò)代碼來(lái)一探究竟吧。

<?php
// header() 函數(shù)向客戶端發(fā)送原始的 HTTP 報(bào)頭。
header('Content-type: image/jpeg');

// 由文件或 URL 創(chuàng)建一個(gè)新圖象,這里的text.jpg就是效果1顯示的預(yù)設(shè)圖片
$rImg = ImageCreateFromJPEG("test.jpg"); 

// 為一幅圖像分配顏色
$cor = imagecolorallocate($rImg, 0, 0, 0);

// 我們可以自定義與圖片結(jié)合的文字字體
$font = "./arial.ttf";

// 設(shè)置最終生成圖片的寬度以及文字相對(duì)于圖片所在的高度
$imgWidthSetting = 676;
$textHeightOffset = 220;

// 解碼main.php里img標(biāo)簽已編碼的URL字符串,包括first, last以及l(fā)ocation
$first = urldecode($_GET['first']);
$last = urldecode($_GET['last']);
$location = urldecode($_GET['location']);

/*
* 取得需要向圖片上添加的文本的范圍。imagettfbbox() 返回一個(gè)含有8個(gè)
* 單元的數(shù)組表示了文本外框的四個(gè)角。
*/
$width_first = imagettfbbox(60, 0, $font, $first);
$width_last = imagettfbbox(70, 0, $font, $last);
$width_location = imagettfbbox(35, 0, $font, $location);

// 進(jìn)一法取整, $width_變量[2]代表右下角X坐標(biāo)位置
$x_first = ceil($imgWidthSetting - $width_first[2]);
$x_last = ceil($imgWidthSetting - $width_last[2]); 
$x_location = ceil($imgWidthSetting - $width_location[2]);

// 利用imagettftext()函數(shù)將文本“寫入”圖像
imagettftext($rImg, 60, 0, $x_first, $textHeightOffset+120, $cor, $font, $first);
imagettftext($rImg, 70, 0, $x_last, $textHeightOffset+210, $cor, $font, $last);
imagettftext($rImg, 35, 0, $x_location, $textHeightOffset+290, $cor, $font, $location);

// 輸出圖象到瀏覽器或文件,quality 為可選項(xiàng),范圍從 0(最差質(zhì)量,文件更?。┑?100(最佳質(zhì)量,文件最大)
imagejpeg($rImg,NULL,100); 

// Free up memory, imagedestroy() 釋放與 image 關(guān)聯(lián)的內(nèi)存。
imagedestroy($rImg);

到這里,我們就完成了通過(guò)PHP把文字添加到圖片上的所有步驟。當(dāng)用戶輸入個(gè)人信息并提交表單后,通過(guò)image.php,效果3的名片就會(huì)自動(dòng)生成。

總結(jié)

利用PHP將文字與圖片結(jié)合雖然簡(jiǎn)單,但可以衍生出很多不同的應(yīng)用方法。譬如,我們可以將名片背景及生成的名片隱藏起來(lái),只對(duì)用戶顯示信息輸入界面。同時(shí),我們?cè)诖a中接入打印機(jī)的API。這樣,當(dāng)用戶輸入完自己的信息點(diǎn)擊繼續(xù)之后,顯示著用戶信息的名片就會(huì)直接打印出來(lái)。這很適用于用戶參加線下聚會(huì)活動(dòng)check in時(shí)的場(chǎng)景。

總之,PHP作為“最好的編程語(yǔ)言”,編碼不統(tǒng)一,性能遭詬病,語(yǔ)法不嚴(yán)謹(jǐn)。的確,PHP的槽點(diǎn)太多,足夠我們黑三天三夜。但我們又必須承認(rèn),PHP及其龐大的內(nèi)置函數(shù)庫(kù)為網(wǎng)頁(yè)開發(fā)者們提供了便捷且強(qiáng)有力的工具。你看,簡(jiǎn)單的幾個(gè)函數(shù),就可以完美實(shí)現(xiàn)文字與圖片的結(jié)合,所以PHP還是有很多人支持的。希望本文對(duì)大家學(xué)習(xí)PHP有所幫助。

相關(guān)文章

  • thinkphp 驗(yàn)證碼 的使用小結(jié)

    thinkphp 驗(yàn)證碼 的使用小結(jié)

    thinkPHP中Verify類可以支持驗(yàn)證碼的生成和驗(yàn)證功能,本文就給大家簡(jiǎn)單講解下verify類生成驗(yàn)證碼以及驗(yàn)證功能的實(shí)現(xiàn)方法,希望大家能夠喜歡。
    2017-05-05
  • PHP多線程之內(nèi)部多線程實(shí)例分析

    PHP多線程之內(nèi)部多線程實(shí)例分析

    這篇文章主要介紹了PHP多線程之內(nèi)部多線程,實(shí)例分析了php多線程的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • PHP下載采集圖片到本地的方法詳解【可忽略ssl認(rèn)證】

    PHP下載采集圖片到本地的方法詳解【可忽略ssl認(rèn)證】

    這篇文章主要介紹了PHP下載采集圖片到本地的方法,結(jié)合實(shí)例形式詳細(xì)分析了php基于Curl遠(yuǎn)程獲取遠(yuǎn)程圖片資源到本地的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2023-07-07
  • mac系統(tǒng)下安裝多個(gè)php并自由切換的方法詳解

    mac系統(tǒng)下安裝多個(gè)php并自由切換的方法詳解

    本文主要介紹了在mac系統(tǒng)下安裝多個(gè)php并自由切換的方法,文中先介紹了安裝多版本php的方法以及遇到相關(guān)錯(cuò)誤的解決方法,版本切換主要是利用php-version工具,php-version是一個(gè)幫助管理從brew安裝的php版本切換的工具,需要的朋友可以參考,下面來(lái)一起看看吧。
    2017-04-04
  • PHP7安裝Redis擴(kuò)展教程【Linux與Windows平臺(tái)】

    PHP7安裝Redis擴(kuò)展教程【Linux與Windows平臺(tái)】

    這篇文章主要介紹了PHP7安裝Redis擴(kuò)展的方法,簡(jiǎn)單分析了Linux與Windows平臺(tái)Redis擴(kuò)展的安裝方法,并提供了一個(gè)實(shí)例進(jìn)一步分析了php操作Redis的相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • 抓取YAHOO股票報(bào)價(jià)的類

    抓取YAHOO股票報(bào)價(jià)的類

    實(shí)時(shí)抓取YAHOO股票報(bào)價(jià)的函數(shù),大家可以學(xué)習(xí)一下思路跟具體的代碼,自己可以拓寬下。
    2009-05-05
  • PHP操作路由器實(shí)現(xiàn)方法示例

    PHP操作路由器實(shí)現(xiàn)方法示例

    這篇文章主要介紹了PHP操作路由器實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了php基于fsockopen針對(duì)路由器進(jìn)行連接、數(shù)據(jù)傳遞、路由切換等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • php中opendir函數(shù)用法實(shí)例

    php中opendir函數(shù)用法實(shí)例

    這篇文章主要介紹了php中opendir函數(shù)用法,以實(shí)例形式詳細(xì)講述了opendir函數(shù)打開目錄的用法及相關(guān)的注意事項(xiàng),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • PHP設(shè)計(jì)模式之代理模式的深入解析

    PHP設(shè)計(jì)模式之代理模式的深入解析

    本篇文章是對(duì)PHP設(shè)計(jì)模式中的代理模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射分析

    ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射分析

    這篇文章主要介紹了ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射,較為通俗的分析了ThinkPHP中公共函數(shù)路徑和配置項(xiàng)路徑的映射關(guān)系與對(duì)應(yīng)修改位置,有助于更好的理解ThinkPHP底層代碼原理,需要的朋友可以參考下
    2014-11-11

最新評(píng)論

乐至县| 芒康县| 凉城县| 太保市| 晴隆县| 嘉善县| 离岛区| 巴林左旗| 竹溪县| 辽阳县| 昌邑市| 句容市| 仙游县| 新邵县| 博乐市| 屯昌县| 南岸区| 高青县| 三穗县| 合山市| 鹤壁市| 通化县| 安阳县| 丰县| 兴化市| 庆元县| 文安县| 石柱| 桃园县| 高邑县| 平邑县| 尉氏县| 乾安县| 治多县| 武城县| 六盘水市| 高青县| 富顺县| 邹城市| 宜兰县| 海晏县|