摘要:二維碼圖片寬度二維碼圖片高度圖片寬度圖片高度重新組合圖片并調(diào)整大小最后直接輸出圖像即可還是老樣子,我們給圖片來(lái)個(gè)名字這次用為隨機(jī)數(shù)時(shí)間戳而后輸出圖像整個(gè)帶的二維碼生成就完成了。
利用 phpqrcode 二維碼生成類庫(kù)和 imagecopymerge 函數(shù)制作帶二維碼的圖片
首先引用phpqrcode類庫(kù)
下載phpqrcode類庫(kù)
下載地址就不提供了,百度一搜一大把;
新建php文件用于創(chuàng)建二維碼
請(qǐng)注意看(每段中文后面都會(huì)有一定的代碼示例) 比如:新建文件 qrcode.php 之后在文件中引入phpqrcode類庫(kù) 代碼演示 include("../phpqrcode/phpqrcode.php"); 而后就到了設(shè)置二維碼的鏈接地址了 $url = "http://www.baidu.com"; 接著設(shè)置二維碼的容錯(cuò)級(jí)別,何為容錯(cuò)級(jí)別?通俗點(diǎn)就是容錯(cuò)級(jí)別百分比越高,就越容易識(shí)別,下面是三種容錯(cuò)級(jí)別: L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 按照效果排序依次是 H -> Q -> M -> L 所以,就直接用 H 代碼示例: $errorCorrectionLevel = "H";//容錯(cuò)級(jí)別 而后繼續(xù)設(shè)置生成二維碼圖片的大小 $matrixPointSize = 7;//圖片大小慢慢自己調(diào)整,只要是int就行 設(shè)置生成二維碼的圖片名稱,博主用了5為隨機(jī)數(shù)+時(shí)間戳生成文件名,為了防止文件名重復(fù)相互覆蓋。。 QR = rand(10000,99999).time().".png"; 最后就到了生成二維碼啦! 直接調(diào)用ORcode::png()就行,帶上剛才設(shè)置好的參數(shù)。最后的這個(gè)參數(shù)*2*是代表白邊的寬度。 QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2);
如果你想在二維碼中間放個(gè)LOGO那么你就繼續(xù)看!
首先,引用一張圖片(you company LOGO) $logo = "./images/logo.png"; 而后為了程序的完整性,簡(jiǎn)單的判斷一下。也許某些童鞋不要LOGO的,注意看下面的代碼,博主注釋的都比較清楚的。
if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二維碼圖片寬度 $QR_height = imagesy($QR);//二維碼圖片高度 $logo_width = imagesx($logo);//logo圖片寬度 $logo_height = imagesy($logo);//logo圖片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //重新組合圖片并調(diào)整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); }
最后直接輸出圖像即可
還是老樣子,我們給圖片來(lái)個(gè)名字;這次用6為隨機(jī)數(shù)+時(shí)間戳 $QRM = rand(100000,999999).time().".png"; imagepng($QR, $QIMG); 而后輸出圖像 echo "";
整個(gè)帶logo的二維碼生成就完成了。如果還要拼合在其他圖像上就繼續(xù)接著看!(文章結(jié)尾有整個(gè)項(xiàng)目的代碼,記得點(diǎn)贊!)
imagecopymerge函數(shù)制拼合(鑲嵌,合并)圖片 同樣適合水印之類的
首先還是設(shè)置圖片,底圖和上面的覆蓋圖
$dst_path = "a.png";//底圖 $src_path = $QIMG;//覆蓋圖,我們就繼續(xù)用上面的那張圖QIMG
創(chuàng)建圖片的實(shí)例
$dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path));
獲取覆蓋圖片的寬高
list($src_w, $src_h) = getimagesize($src_path);
將圖片復(fù)制到目標(biāo)圖片(底圖)上,最后個(gè)參數(shù)是設(shè)置透明度(50為半透明,100為不透明,自己隨意設(shè)置即可),這里實(shí)現(xiàn)不透明效果,兩個(gè)20是控制圖片坐標(biāo)位置,自己慢慢調(diào)整
imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100);
如果水印圖片本身帶透明色,則使用imagecopy方法
imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);//博主的不是透明的,所以不用這段~用下面的
生成圖片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
而后用switch判斷一下圖片的類型
switch ($dst_type) { case 1://GIF header("Content-Type: image/gif"); imagegif($dst); break; case 2://JPG header("Content-Type: image/jpeg"); imagejpeg($dst); break; case 3://PNG header("Content-Type: image/png"); imagepng($dst); break; default: break; }
最后將圖片打印出來(lái)
imagedestroy($dst); imagedestroy($src);
整個(gè)程序的完整代碼,伸手黨們!記得點(diǎn)贊打賞收藏等等等等!
include("../phpqrcode/phpqrcode.php"); $url = "http://www.baidu.com"; //二維碼內(nèi)容 $errorCorrectionLevel = "H";//容錯(cuò)級(jí)別 $matrixPointSize = 7;//生成圖片大小 //生成二維碼圖片 $QR = rand(10000,99999).time().".png"; QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2); $logo = "../images/logo.png";//準(zhǔn)備好的logo圖片 //生成時(shí)間戳處理覆蓋圖片防止權(quán)限的存在 // $op = time(); // $QR = "qrcode.png";//已經(jīng)生成的原始二維碼圖 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二維碼圖片寬度 $QR_height = imagesy($QR);//二維碼圖片高度 $logo_width = imagesx($logo);//logo圖片寬度 $logo_height = imagesy($logo);//logo圖片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //重新組合圖片并調(diào)整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } //輸出圖片 $QIMG = rand(100000,999999).time().".png"; imagepng($QR, $QIMG); $dst_path = "a.png";//底圖 $src_path = $QIMG;//覆蓋圖 //創(chuàng)建圖片的實(shí)例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //獲取覆蓋圖圖片的寬高 list($src_w, $src_h) = getimagesize($src_path); //將覆蓋圖復(fù)制到目標(biāo)圖片上,最后個(gè)參數(shù)100是設(shè)置透明度(100是不透明),這里實(shí)現(xiàn)不透明效果,兩個(gè)20是覆蓋圖坐標(biāo)位置 imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100); //如果覆蓋圖圖片本身帶透明色,則使用imagecopy方法 //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h); //輸出圖片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); switch ($dst_type) { case 1://GIF header("Content-Type: image/gif"); imagegif($dst); break; case 2://JPG header("Content-Type: image/jpeg"); imagejpeg($dst); break; case 3://PNG header("Content-Type: image/png"); imagepng($dst); break; default: break; } imagedestroy($dst); imagedestroy($src);
源代碼理解不了的,請(qǐng)看上面的文章,我都寫(xiě)的比較清楚,代碼里面也注釋了~遇到問(wèn)題解決不了請(qǐng)百度,實(shí)在不行就留言給博主,博主會(huì)第一時(shí)間回復(fù)你!
大功告成,博主要看巴薩打拉斯帕爾馬斯了!但愿我梅老板能再繼續(xù)進(jìn)逆天任意球!
okey bye see you!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39426.html
摘要:二維碼圖片寬度二維碼圖片高度圖片寬度圖片高度重新組合圖片并調(diào)整大小最后直接輸出圖像即可還是老樣子,我們給圖片來(lái)個(gè)名字這次用為隨機(jī)數(shù)時(shí)間戳而后輸出圖像整個(gè)帶的二維碼生成就完成了。 利用 phpqrcode 二維碼生成類庫(kù)和 imagecopymerge 函數(shù)制作帶二維碼的圖片 首先引用phpqrcode類庫(kù) 下載phpqrcode類庫(kù) 下載地址就不提供了,百度一搜一大把; 新建...
摘要:第一種方法第一種方法利用使用最廣泛,最方便的技術(shù)實(shí)現(xiàn)封裝生成二維碼圖片的函數(shù)方法利用生成二維碼圖片二維碼內(nèi)容參數(shù)生成二維碼的尺寸,寬度和高度的值可選參數(shù),糾錯(cuò)等級(jí)生成的二維碼離邊框的距離使用注意事項(xiàng)先構(gòu)建內(nèi)容字符串調(diào)用函數(shù)生成構(gòu)建內(nèi)容字符串 第一種方法: 1,第一種方法:利用使用最廣泛,最方便的Google api技術(shù)實(shí)現(xiàn); 2, 第二種方法: 1,第二種方法使用php類庫(kù)PHP QR...
摘要:移動(dòng)端活動(dòng)頁(yè)面常常需要能夠分享到各種社交中,常用的有微信等。微信二維碼問(wèn)題同一個(gè)頁(yè)面里要是有兩個(gè)二維碼,長(zhǎng)按掃描總是只能掃出左側(cè)第一個(gè)二維碼。 首發(fā)于簡(jiǎn)書(shū)博客:http://www.jianshu.com/p/e958... 2017-11-25 更新:5. 使用 Gulp 拼合圖片 1. 單個(gè)頁(yè)面內(nèi)容不能過(guò)多 設(shè)計(jì)常用尺寸:750 x 1334 / 640 x 1134,包含了手機(jī)頂...
摘要:移動(dòng)端活動(dòng)頁(yè)面常常需要能夠分享到各種社交中,常用的有微信等。微信二維碼問(wèn)題同一個(gè)頁(yè)面里要是有兩個(gè)二維碼,長(zhǎng)按掃描總是只能掃出左側(cè)第一個(gè)二維碼。 首發(fā)于簡(jiǎn)書(shū)博客:http://www.jianshu.com/p/e958... 2017-11-25 更新:5. 使用 Gulp 拼合圖片 1. 單個(gè)頁(yè)面內(nèi)容不能過(guò)多 設(shè)計(jì)常用尺寸:750 x 1334 / 640 x 1134,包含了手機(jī)頂...
閱讀 1523·2023-04-26 02:03
閱讀 4707·2021-11-22 13:53
閱讀 4579·2021-09-09 11:40
閱讀 3782·2021-09-09 09:34
閱讀 2125·2019-08-30 13:18
閱讀 3501·2019-08-30 11:25
閱讀 3295·2019-08-26 14:06
閱讀 2545·2019-08-26 13:52