Heim Backend-Entwicklung PHP-Tutorial yii 调整phpqrcode生成二维码附在线演示地址

yii 调整phpqrcode生成二维码附在线演示地址

Jun 13, 2016 pm 12:27 PM
class div gt lt

yii 整合phpqrcode生成二维码附在线演示地址

1,先到官网下载包  http://phpqrcode.sourceforge.net/

下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。

phpqrcode.php提供了一个关键的png()方法,其中
参数$text表示生成二位的的信息文本;
参数$outfile表示是否输出二维码图片 文件,默认否;
参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 
参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;
参数$saveandprint表示是否保存二维码并显示。

2,下载后把解压后的phpqrcode文件夹放到extensions文件夹下,如下图:

3,引入类 phpqrcode

Yii::$enableIncludePath = false;Yii::import ('application.extensions.phpqrcode.phpqrcode', 1 );
Nach dem Login kopieren

下面是完整的生成二维码的方法

public function actionQrcode(){		$this->breadcrumbs=array_merge($this->breadcrumbs,array(				'生成二维码'		));		$qrcode_path='';		$file_tmp_name='';		$errors=array();		if(!empty($_POST)){			$content = trim($_POST['content']); //二维码内容			$contentSize=$this->getStringLength($content);			if($contentSize>290){				$errors[]='字数过长,不能多于150个字符!';			}			Yii::$enableIncludePath = false;			Yii::import ('application.extensions.phpqrcode.phpqrcode', 1 );			if(isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp_name'])){				if($_FILES['upimage']['size']>512000){					$errors[]="你上传的文件过大,最大不能超过500K。";				}				$file_tmp_name=$_FILES['upimage']['tmp_name'];				$fileext = array("image/pjpeg","image/jpeg","image/gif","image/x-png","image/png");				if(!in_array($_FILES['upimage']['type'],$fileext)){					$errors[]="你上传的文件格式不正确,仅支持 png, jpg, gif格式。";				}			}			$tpgs=$_POST['tpgs'];//图片格式			$bas_path=dirname ( Yii::app ()->BasePath );			$qrcode_bas_path=$bas_path.'/upload/qrcode/';			if(!is_dir($qrcode_bas_path)){				mkdir($qrcode_bas_path, 0777, true);			}			$uniqid_rand=date("Ymdhis").uniqid(). rand(1,1000);			$qrcode_path=$qrcode_bas_path.$uniqid_rand. "_1.".$tpgs;			$qrcode_path_new=$qrcode_bas_path.$uniqid_rand."_2.".$tpgs;			if(Helper::getOS()=='Linux'){				$mv = move_uploaded_file($file_tmp_name, $qrcode_path);			}else{				//解决windows下中文文件名乱码的问题				$save_path = Helper::safeEncoding($qrcode_path,'GB2312');				if(!$save_path){					$errors[]='上传失败,请重试!';				}				$mv = move_uploaded_file($file_tmp_name, $qrcode_path);			}			if(empty($errors)){				$errorCorrectionLevel = $_POST['errorCorrectionLevel'];//容错级别				$matrixPointSize = $_POST['matrixPointSize'];//生成图片大小				$matrixMarginSize = $_POST['matrixMarginSize'];//边距大小				//生成二维码图片				QRcode::png($content,$qrcode_path_new, $errorCorrectionLevel, $matrixPointSize, $matrixMarginSize);				$QR = $qrcode_path_new;//已经生成的原始二维码图				$logo = $qrcode_path;//准备好的logo图片				if (file_exists($logo)) {					$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;					//重新组合图片并调整大小					imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,					$logo_qr_height, $logo_width, $logo_height);					//输出图片// 					header("Content-type: image/png");					imagepng($QR,$qrcode_path);					imagedestroy($QR);				}else{					$qrcode_path=$qrcode_path_new;				}				$qrcode_path=str_replace($bas_path,'', $qrcode_path);			}else{				$qrcode_path='';			}		}		$data=array('data'=>array('errors'=>$errors,'qrcode_path'=>$qrcode_path));		$this->render ( 'qrcode',$data);	}
Nach dem Login kopieren

前台的上传界面:

<?php$vars = get_defined_vars ();$data = $vars ['data'];$content=Yii::app ()->request->hostInfo;$matrixPointSize=6;$matrixMarginSize=2;$errorCorrectionLevel='M';$tpgs='gif';if(!empty($_POST)){	$content=$_POST['content'];	$matrixPointSize=$_POST['matrixPointSize'];	$matrixMarginSize=$_POST['matrixMarginSize'];	$errorCorrectionLevel=$_POST['errorCorrectionLevel'];	$tpgs=$_POST['tpgs'];}$arrayCorrectionLevel=array('L'=>'L - Low (7%)','M'=>'M - Medium (15%)','Q'=>'Q - Quartile (25%)','H'=>'H - High (30%)');$arrayTpgs=array('gif'=>'gif格式','png'=>'png格式','jpg格式');?><div class="col-md-12">	<div class="form-horizontal panel panel-default margin-t-10 b-img">		<div class="panel-heading">			<div class="pull-left">				<span class="g-bg glyphicon glyphicon-wrench margin-r-2"					aria-hidden="true"></span>在线生成二维码			</div>			<div class="clearfix"></div>		</div><?php$form = $this->beginWidget ( 'CActiveForm', array (		'id' => 'qrcode-form',		'htmlOptions' => array (				'id' => 'view_table',				'class' => 'add-form padding-10',				'enctype' => 'multipart/form-data'		),		'enableAjaxValidation' => false) );?>	<div class="form-group">			<label class="col-lg-2 control-label">尺寸大小</label>			<div class="col-lg-3">				<select class="form-control" id="matrixPointSize"					name="matrixPointSize">					<?php for ($i=1;$i<21;$i++):?>                        <option value="<?php echo $i;?>" <?php echo $i==$matrixPointSize?'selected':'';?>><?php echo $i;?></option>                    <?php endfor;?>                	</select>			</div>		</div>		<div class="form-group">			<label class="col-lg-2 control-label">边距大小</label>			<div class="col-lg-3">				<select class="form-control" id="matrixMarginSize"					name="matrixMarginSize">					<?php for ($i=0;$i<21;$i++):?>                        <option value="<?php echo $i;?>" <?php echo $i==$matrixMarginSize?'selected':'';?>><?php echo $i;?></option>                    <?php endfor;?>                </select>			</div>		</div>		<div class="form-group">			<label class="col-lg-2 control-label">容错级别</label>			<div class="col-lg-3">			<?php echo CHtml::dropDownList('errorCorrectionLevel',$errorCorrectionLevel, $arrayCorrectionLevel,array('class'=>'form-control'));?>			</div>		</div>		<div class="form-group">			<label class="col-lg-2 control-label">保存格式</label>			<div class="col-lg-3">			<?php echo CHtml::dropDownList('tpgs',$tpgs, $arrayTpgs,array('class'=>'form-control'));?>			</div>		</div>		<div class="form-group">			<label class="col-lg-2 control-label">二维码内容</label>			<div class="col-lg-5">				<?php echo CHtml::textField('content',$content,array('class'=>'form-control','maxlength'=>150));?>			</div>		</div>		<div class="form-group">			<label class="col-lg-2 control-label">二维码logo图片</label>			<div class="col-lg-5">				<div class="col-md-6">						<input id="upimage" type="file" name="upimage" class="hidden">						<input id="tmp_file" class="form-control" type="text" value="gif,png,jpg">					</div>				<div class="col-md-6"><a class="btn btn-default" onclick="$('input[id=upimage]').click();">选择文件</a></div>			</div>		</div>		<div class="list_back">			<input type="submit" value="生成二维码" class="btn btn-success">		</div>	</div><?php $this->endWidget(); ?>	<div class="panel panel-default margin-t-10 b-img">		<div class="panel-heading">			<span class="g-bg glyphicon glyphicon-wrench margin-r-2" aria-hidden="true"></span>二维码		</div>		<div class="panel-body">		<?php if(empty($_POST)):?>		<?php echo CHtml::image('/static/tool/qrcode/qrcode.gif','二维码');?>		<?php endif;?>		<?php if(!empty($data['errors'])):?>			<label class="col-lg-2 text-right">生成失败</label>			<div class="col-lg-5">			<?php foreach ($data['errors'] as $e):?>			<?php echo $e;?><br>			<?php endforeach;?>			</div>		<?php endif;?>		<?php if(!empty($data['qrcode_path'])):?>			<?php echo CHtml::image($data['qrcode_path'],'二维码');?>			<a class="btn btn-success color-f" href="<?php echo $data['qrcode_path'];?>" target="_blank"><span aria-hidden="true" class="glyphicon glyphicon-download-alt margin-r-2"></span>右键另存为二维码</a>		<?php endif;?>		</div>	</div><?php $this->renderPartial('/component/duoshuo_common');?></div>
Nach dem Login kopieren

如图:

 

演示地址

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

So verwenden Sie Klassen und Methoden in Python So verwenden Sie Klassen und Methoden in Python Apr 21, 2023 pm 02:28 PM

Konzepte und Instanzen von Klassen und Methoden Klasse (Klasse): wird verwendet, um eine Sammlung von Objekten mit denselben Eigenschaften und Methoden zu beschreiben. Es definiert die Eigenschaften und Methoden, die jedem Objekt in der Sammlung gemeinsam sind. Objekte sind Instanzen von Klassen. Methode: In der Klasse definierte Funktion. Klassenkonstruktionsmethode __init__(): Die Klasse verfügt über eine spezielle Methode (Konstruktionsmethode) namens init(), die automatisch aufgerufen wird, wenn die Klasse instanziiert wird. Instanzvariablen: In der Deklaration einer Klasse werden Attribute durch Variablen dargestellt. Solche Variablen werden Instanzvariablen genannt. Instanziierung: Erstellen Sie eine Instanz einer Klasse, ein bestimmtes Objekt der Klasse. Vererbung: Das heißt, eine abgeleitete Klasse (derivedclass) erbt die Basisklasse (baseclass).

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

Was bedeutet Klasse in Python? Was bedeutet Klasse in Python? May 21, 2019 pm 05:10 PM

Klasse ist ein Schlüsselwort in Python, das zum Definieren einer Klasse verwendet wird: Fügen Sie nach der Klasse ein Leerzeichen hinzu und fügen Sie dann den Klassennamen hinzu. Wenn es mehrere Wörter gibt, verwenden Sie die Groß-/Kleinschreibung Benennung, wie zum Beispiel [class Dog()].

Ersetzen Sie den Klassennamen eines Elements mit jQuery Ersetzen Sie den Klassennamen eines Elements mit jQuery Feb 24, 2024 pm 11:03 PM

jQuery ist eine klassische JavaScript-Bibliothek, die in der Webentwicklung weit verbreitet ist. Sie vereinfacht Vorgänge wie die Verarbeitung von Ereignissen, die Bearbeitung von DOM-Elementen und die Durchführung von Animationen auf Webseiten. Bei der Verwendung von jQuery kommt es häufig vor, dass Sie den Klassennamen eines Elements ersetzen müssen. In diesem Artikel werden einige praktische Methoden und spezifische Codebeispiele vorgestellt. 1. Verwenden Sie die Methoden „removeClass()“ und „addClass()“. jQuery stellt die Methode „removeClass()“ zum Löschen bereit

Detaillierte Erläuterung der Verwendung der PHP-Klasse: Machen Sie Ihren Code klarer und leichter lesbar Detaillierte Erläuterung der Verwendung der PHP-Klasse: Machen Sie Ihren Code klarer und leichter lesbar Mar 10, 2024 pm 12:03 PM

Beim Schreiben von PHP-Code ist die Verwendung von Klassen eine weit verbreitete Praxis. Durch die Verwendung von Klassen können wir verwandte Funktionen und Daten in einer einzigen Einheit kapseln, wodurch der Code klarer, leichter lesbar und einfacher zu warten ist. In diesem Artikel wird die Verwendung von PHPClass ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, besser zu verstehen, wie Klassen zur Optimierung von Code in tatsächlichen Projekten angewendet werden. 1. Klassen erstellen und verwenden In PHP können Sie das Schlüsselwort class verwenden, um eine Klasse zu definieren und Eigenschaften und Methoden in der Klasse zu definieren.

Wie man mit CSS erkennt, dass einem Div eine Ecke fehlt Wie man mit CSS erkennt, dass einem Div eine Ecke fehlt Jan 30, 2023 am 09:23 AM

CSS-Methode, um zu erkennen, dass einem Div eine Ecke fehlt: 1. Erstellen Sie eine HTML-Beispieldatei und definieren Sie ein Div. 2. Legen Sie die Hintergrundfarbe für die Breite und Höhe des Div fest. 3. Fügen Sie dem zu löschenden Div eine Pseudoklasse hinzu eine Ecke und setzen Sie die Pseudoklasse auf „Die gleiche Farbe wie die Hintergrundfarbe verwenden“, drehen Sie sie dann um 45 Grad und positionieren Sie sie dann an der Ecke, die entfernt werden muss.

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone Jul 29, 2023 am 08:22 AM

Teil 1: Erste Schritte zur Fehlerbehebung Überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen Lösungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt möglicherweise nicht an Ihrem Gerät; die Server von Apple sind möglicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgemäß funktioniert. Wenn es ein Problem gibt, können Sie nur warten, bis Apple es behebt. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem „Verbindung zum AppStore nicht möglich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

See all articles