PHP生成带LOGO二维码并解决失真

时间:2025-02-23 07:33:42
public function qrcode() { /*************************************直接生成二维码不带logo**********************************************************/ // Vendor(''); // // $url = "/zhihua_w"; // //$level = 3; // //$size = 4; // //容错级别 // //$errorCorrectionLevel = intval($level); // $errorCorrectionLevel = 'L'; // //生成图片大小 // //$matrixPointSize = intval($size); // $matrixPointSize = 10; // //生成二维码图片 // $object = new \QRcode(); // //第二个参数false的意思是不生成图片文件,如果你写上‘’则会在根目录下生成一个png格式的图片文件 // $object->png($url,'.\Application\Home\View\setting\img\', $errorCorrectionLevel, $matrixPointSize, 2); /*************************************生成带有logo的二维码**********************************************************/ Vendor(''); $object = new \QRcode(); //二维码内容 $url = '/';//二维码网址 //容错级别 $errorCorrectionLevel = 'L'; //生成图片大小 $matrixPointSize = 6; //生成一个二维码图片 $object->png($url,'.\Application\Home\View\setting\img\', $errorCorrectionLevel, $matrixPointSize, 2); //准备好的logo图片,本人放在了根目录下 $logo = '.\Application\Home\View\setting\img\'; //已经生成的原始二维码图,也在根目录下 $qrcode = '.\Application\Home\View\setting\img\'; //logo图片存在 if ($logo !== FALSE) { $qrcode = imagecreatefromstring(file_get_contents($qrcode)); $logo = imagecreatefromstring(file_get_contents($logo)); if (imageistruecolor($logo)) { imagetruecolortopalette($logo, false, 65535);//添加这行代码来解决颜色失真问题 } $qrcode_width = imagesx($qrcode); //二维码图片宽度 $qrcode_height = imagesy($qrcode); //二维码图片高度 $logo_width = imagesx($logo); //logo图片宽度 $logo_height = imagesy($logo); //logo图片高度 $logo_qr_width = $qrcode_width / 5; $scale = $logo_width / $logo_qr_width; $logo_qr_height = $logo_height / $scale; $from_width = ($qrcode_width - $logo_qr_width) / 2; //重新组合图片并调整大小 imagecopyresampled($qrcode, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } //输出图片 imagepng($qrcode, '.\Application\Home\View\setting\img\');//保存合成图片,命名放在该地址中 echo '<img src="\daili\Application\Home\View\setting\img\" >'; }