-
- class QRCode{
- public $w;
- public $h;
- public $s;
- function __construct($w1,$h1,$s1){
- $this->w = $w1;
- $this->h = $h1;
- $this->s = $s1;
- $this->outimgase();
- }
- function qrcode(){
- $post_data = array();
- $post_data['cht'] = 'qr';
- $post_data['chs'] = $this->w."x".$this->h;
- $post_data['chl'] = $this->s;
- $post_data['choe'] = "UTF-8";
- $url = "http://chart.apis.google.com/chart";
- $data_Array = array();
- foreach($post_data as $key => $value)
- {
- $data_Array[] = $key.'='.$value;
- }
- $data = implode("&",$data_Array);
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $result = curl_exec($ch);
- curl_close($ch);
- return $result;
- }
- function outimgase(){
- echo $this->qrcode();
- }
- }
- header("Content-type:image/png");
- $t = new QRCode(300,300,"tianxin");
复制代码
2. Then, draw the QR code and your target image together through a php file.
-
-
$surl = $_POST["url"]; - function GrabImage($url,$filename="") {
- if($url==""):return false;endif;
- if($filename=="") {
- $ext=strrchr($url,".");
- if($ext!=".gif" && $ext!=".jpg"):return false;endif;
- $filename=date("dMYHis").$ext;
- }
- ob_start();
- readfile($url);
- $img = ob_get_contents();
- ob_end_clean();
- $size = strlen($img);
- $fp2=@fopen($filename, "a");
- fwrite($fp2,$img);
- fclose($fp2);
- return $filename;
- }
- $source = GrabImage("http://localhost/QRCode/QRCode.php","Myqrcode.png");
- $water =GrabImage($surl,"t.png");
- function getImageInfo($img){
- $imageInfo = getimagesize($img);
- if ($imageInfo !== false) {
- $imageType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
- $imageSize = filesize($img);
- $info = array(
- "width" => $imageInfo[0],
- "height" => $imageInfo[1],
- "type" => $imageType,
- "size" => $imageSize,
- "mime" => $imageInfo['mime']
- );
- return $info;
- } else {
- return false;
- }
- }
- function thumb($image, $thumbname, $type='', $maxWidth=200, $maxHeight=50, $interlace=true) {
- // 获取原图信息
- $info = getImageInfo($image);
- if ($info !== false) {
- $srcWidth = $info['width'];
- $srcHeight = $info['height'];
- $type = empty($type) ? $info['type'] : $type;
- $type = strtolower($type);
- $interlace = $interlace ? 1 : 0;
- unset($info);
- $scale = min($maxWidth / $srcWidth, $maxHeight / $srcHeight); // 计算缩放比例
- if ($scale >= 1) {
- // 超过原图大小不再缩略
- $width = $srcWidth;
- $height = $srcHeight;
- } else {
- // 缩略图尺寸
- $width = (int) ($srcWidth * $scale);
- $height = (int) ($srcHeight * $scale);
- }
- // 载入原图
- $createFun = 'ImageCreateFrom' . ($type == 'jpg' ? 'jpeg' : $type);
- $srcImg = $createFun($image);
- //创建缩略图
- if ($type != 'gif' && function_exists('imagecreatetruecolor'))
- $thumbImg = imagecreatetruecolor($width, $height);
- else
- $thumbImg = imagecreate($width, $height);
- // 复制图片
- if (function_exists("ImageCopyResampled"))
- imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $width, $height, $srcWidth, $srcHeight);
- else
- imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $width, $height, $srcWidth, $srcHeight);
- if ('gif' == $type || 'png' == $type) {
- //imagealphablending($thumbImg, false);//取消默认的混色模式
- //imagesavealpha($thumbImg,true);//设定保存完整的 alpha 通道信息
- $background_color = imagecolorallocate($thumbImg, 0, 255, 0); // 指派一个绿色
- imagecolortransparent($thumbImg, $background_color); // 设置为透明色,若注释掉该行则输出绿色的图
- }
- // 对jpeg图形设置隔行扫描
- if ('jpg' == $type || 'jpeg' == $type)
- imageinterlace($thumbImg, $interlace);
// 生成图片
- $imageFun = 'image' . ($type == 'jpg' ? 'jpeg' : $type);
- $imageFun($thumbImg, $thumbname);
- imagedestroy($thumbImg);
- imagedestroy($srcImg);
- return $thumbname;
- }
- return false;
- }
- function water($source, $thumb, $savename="", $alpha=100){
- //检查文件是否存在
- if (!file_exists($source) || !file_exists($thumb))
- return false;
- //图片信息
- $sInfo = getImageInfo($source);
- $water = thumb($thumb,"wy.jpg","jpg",$sInfo["width"]/4,$sInfo["height"]/4);
- $wInfo = getImageInfo($water);
- //如果图片小于水印图片,不生成图片
- if ($sInfo["width"] < $wInfo["width"] || $sInfo['height'] < $wInfo['height'])
- return false;
- //建立图像
- $sCreateFun = "imagecreatefrom" . $sInfo['type'];
- $sImage = $sCreateFun($source);
- $wCreateFun = "imagecreatefrom" . $wInfo['type'];
- $wImage = $wCreateFun($water);
- //设定图像的混色模式
- imagealphablending($wImage, true);
- //图像位置,默认为右下角右对齐
- // $posY = $sInfo["height"] - $wInfo["height"];
- // $posX = $sInfo["width"] - $wInfo["width"];
- $posY = ($sInfo["height"] - $wInfo["height"])/2;
- $posX = ($sInfo["width"] - $wInfo["width"])/2;
- //生成混合图像
- imagecopymerge($sImage, $wImage, $posX, $posY, 0, 0, $wInfo['width'], $wInfo['height'], $alpha);
- //输出图像
- $ImageFun = 'Image' . $sInfo['type'];
- //如果没有给出保存文件名,默认为原图像名
- if (!$savename) {
- $savename = $source;
- @unlink($source);
- }
- //Save the image
- $ImageFun($sImage, $savename);
- imagedestroy($sImage);
- }
- water($source,$water);
-
Copy code
at In the above code, 3 functions are used. The GrabImage() function is to convert the file that generates the QR code into a picture. The next function is to process the scaling of the picture and add the target picture to the second digit.
3. Here is an entry file index.html with the following code:
-
-
A QR code generator where you can define your own pictures in the middle
-
-
|