PHP合成图片怎么保证清晰度(在phpqrcode中生成带Logo的二维码)

在phpqrcode中生成带Logo的二维码

保持logo的清晰度:

PHP合成图片主要用的的函数  :

  •  imagecreatefromstring  //返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。

  •  imageCreatetruecolor   //返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。

  •  imagecolorallocate       // 为一幅图像分配颜色

  •  imagecopyresampled   //实现图片缩放

  •  imagecopymerge        //合并图片

  • imagepng                    //生成png图片

$logo = './qrcode/a.png';  //准备好的logo图片
$QR = './a.png';           //已经生成的原始二维码图
if (file_exists($logo)) {
  $QR = imagecreatefromstring(file_get_contents($QR));//目标图象连接资源。
            
  $logo = imagecreatefromstring(file_get_contents($logo));//源图象连接资源。
            
  //创建一个和二维码图片一样大小的真彩色画布
  //(ps:只有这样才能保证后面copy装备图片的时候不会失真)
  $canvas = imageCreatetruecolor(imagesx($QR),imagesy($QR));
            
  //为真彩色画布创建白色背景,再设置为透明
  $color = imagecolorallocate($canvas, 255, 255, 255);
  imagefill($canvas, 0, 0, $color);
  //imageColorTransparent($canvas, $color); //可以设为透明背景
            
  //首先将二维码画布采样copy到真彩色画布中,不会失真
  imagecopyresampled($canvas,$QR,0,0,0,0,imagesx($QR),imagesy($QR),
  imagesx($QR),imagesy($QR));
            
  //再将装备图片copy到已经具有人物图像的真彩色画布中,同样也不会失真
  imagecopymerge($canvas,$logo,(imagesx($QR)-imagesx($logo))/2,
  (imagesy($QR)-imagesy($logo))/2,0,0,imagesx($logo),imagesy($logo), 100);
            
  //将画布保存到指定的png文件
            
  imagepng($canvas, './qrcode/'.'qrcode.png');
            
  imagedestroy($QR);
            
  imagedestroy($logo);
            
  return '<img src="'.'/qrcode/qrcode.png'.'" alt="">';
}

https://www.doadc.com/index/blog/detail/aid/86.html

阅读更多
换一批

没有更多推荐了,返回首页