HP QR Code下载和使用方法如下

<a href="http://newmiracle.cn/?p=85">http://newmiracle.cn/?p=85</a>

找到Common/phpqrcode.php 这个文件

找到QRimage类的 image函数 生成图片的核心逻辑就在这个函数

<pre>

/**

* @param $frame 二进制信息的数组

* @param int $pixelPerPoint 每个二进制数字生成的大小

* @param int $outerFrame 二维码外间距的白色

* @return resource

*/

private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4)

{

$h = count($frame);

$w = strlen($frame[0]);

$imgW = $w + 2*$outerFrame;

$imgH = $h + 2*$outerFrame;

$base_image =ImageCreate($imgW, $imgH);

$col[0] = ImageColorAllocate($base_image,255,255,255);

$col[1] = ImageColorAllocate($base_image,0,0,0);

$col[2] = ImageColorAllocate($base_image,255,0,0);

imagefill($base_image, 0, 0, $col[0]);

//循环遍历二进制信息 1代表黑色 这个地方就可以自定义颜色

for($y=0; $y<$h; $y++) {

for($x=0; $x<$w; $x++) {

if ($frame[$y][$x] == '1') {

ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[2]);

}

}

}

$target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);

//重新给图片设置大小

ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);

ImageDestroy($base_image);

return $target_image;

}

</pre>

下面个版本是自定义图片哦

private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4)

{

$h = count($frame);

$w = strlen($frame[0]);

$imgW = $w*5 + 2*$outerFrame;

$imgH = $h*5 + 2*$outerFrame;

$base_image =ImageCreate($imgW, $imgH);

$col[0] = ImageColorAllocate($base_image,255,255,255);

$col[1] = ImageColorAllocate($base_image,0,0,0);

$col[2] = ImageColorAllocate($base_image,255,0,0);

imagefill($base_image, 0, 0, $col[0]);

//循环遍历二进制信息 1代表黑色 这个地方就可以自定义图片 左上 右上 左下因为要保持纯色 不能替换图片

$image1 = imagecreatefromjpeg(__DIR__.'/huaduo.jpg');

$image2 = imagecreatefromjpeg(__DIR__.'/huaduo1.jpg');

for($y=0; $y<$h; $y++) {

for($x=0; $x<$w; $x++) {

if ($frame[$y][$x] == '1') {

if($x>7 && $x<33){

imagecopymerge($base_image, $image1, $x*5+$outerFrame, $y*5+$outerFrame, 0, 0, 5, 5, 100);

}else if($y>7 && $y<33){

imagecopymerge($base_image, $image1, $x*5+$outerFrame, $y*5+$outerFrame, 0, 0, 5, 5, 100);

}else if($x>30 && $y>30){

imagecopymerge($base_image, $image1, $x*5+$outerFrame, $y*5+$outerFrame, 0, 0, 5, 5, 100);

}else{

imagecopymerge($base_image, $image2, $x*5+$outerFrame, $y*5+$outerFrame, 0, 0, 5, 5, 100);

}

// ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]);

}

}

}

return $base_image;


}