利用phpqrcode二维码生成类库和imagecopymerge函数制拼接图片的经验
|
前期准备
1、利用phpqrcode生成二维码:
png(, = , = QR_ECLEVEL_L, = 3, = 4,= = QRencode::factory(,, ->encodePNG(,,=默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径; * 第3个参数$level:容错级别,默认为L。 * 可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%)。 * 这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别 * 第4个参数$size:控制生成图片的大小,默认为4; * 第5个参数$margin:控制生成二维码的空白区域大小; * 第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径; * 使用示例: ("./phpqrcode.php" = "http://www.baidu.com" Q -> M -> L = 'H' = 7 = "test.png"::png(,,,,12、如果要在生成的二维码中间放置logo的话: ("./phpqrcode.php" = "http://www.baidu.com" Q -> M -> L = 'H' = 7 = "test.png"::png(,1 = './img/logo.png' = = './img/qrlogo.png'(( = imagecreatefromstring(()); = imagecreatefromstring(()); = imagesx( = imagesy( = imagesx(); = imagesy();
} 3、如果加了logo的二维码要放在一张海报上的话: imagecopymerge函数制拼合(镶嵌,合并)图片 同样适合水印之类的 ("./phpqrcode.php" = "http://www.baidu.com" Q -> M -> L = 'H' = 7 = "test.png"::png(,1//————————————————————————————————————————————————————————————————
//二维码上添加logo</span>
<span style="color: #800080">$logo</span> = './img/logo.png'<span style="color: #000000">;
</span><span style="color: #800080">$QR</span> = <span style="color: #800080">$filename</span><span style="color: #000000">;
</span><span style="color: #800080">$QRlogo</span> = './img/qrlogo.png'<span style="color: #000000">;
</span><span style="color: #0000ff">if</span>(<span style="color: #008080">file_exists</span>(<span style="color: #800080">$logo</span><span style="color: #000000">)){
</span><span style="color: #008000">//</span><span style="color: #008000"> 函数:imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像</span>
<span style="color: #800080">$QR</span> = imagecreatefromstring(<span style="color: #008080">file_get_contents</span>(<span style="color: #800080">$QR</span>)); <span style="color: #008000">//</span><span style="color: #008000">目标图象连接资源。</span>
<span style="color: #800080">$logo</span> = imagecreatefromstring(<span style="color: #008080">file_get_contents</span>(<span style="color: #800080">$logo</span>)); <span style="color: #008000">//</span><span style="color: #008000">源图象连接资源。
// php函数:imagesx(resource image):获取图像宽度
// PHP函数:imagesy(resource image):获取图像高度</span>
<span style="color: #800080">$QR_width</span> = imagesx(<span style="color: #800080">$QR</span><span style="color: #000000">);
</span><span style="color: #800080">$QR_height</span> = imagesy(<span style="color: #800080">$QR</span><span style="color: #000000">);
</span><span style="color: #800080">$logo_width</span> = imagesx(<span style="color: #800080">$logo</span>);<span style="color: #008000">//</span><span style="color: #008000">logo图片宽度 </span>
<span style="color: #800080">$logo_height</span> = imagesy(<span style="color: #800080">$logo</span>);<span style="color: #008000">//</span><span style="color: #008000">logo图片高度 </span>
<span style="color: #800080">$logo_qr_width</span> = <span style="color: #800080">$QR_width</span> / 5; <span style="color: #008000">//</span><span style="color: #008000">组合之后logo的宽度(占二维码的1/5)</span>
<span style="color: #800080">$scale</span> = <span style="color: #800080">$logo_width</span>/<span style="color: #800080">$logo_qr_width</span>; <span style="color: #008000">//</span><span style="color: #008000">logo的宽度缩放比(本身宽度/组合后的宽度)</span>
<span style="color: #800080">$logo_qr_height</span> = <span style="color: #800080">$logo_height</span>/<span style="color: #800080">$scale</span>; <span style="color: #008000">//</span><span style="color: #008000">组合之后logo的高度</span>
<span style="color: #800080">$from_width</span> = (<span style="color: #800080">$QR_width</span> - <span style="color: #800080">$logo_qr_width</span>) / 2; <span style="color: #008000">//</span><span style="color: #008000">组合之后logo左上角所在坐标点
//重新组合图片,并调整大小</span>
imagecopyresampled(<span style="color: #800080">$QR</span>,<span style="color: #800080">$QRlogo</span><span style="color: #000000">);
</span><span style="color: #008000">//</span><span style="color: #008000">——————————————————————————————————————————
// 加了logo的二维码放在海报之类的背景图上面</span>
<span style="color: #800080">$dst_path</span> = './img/xuexi.jpg'; <span style="color: #008000">//</span><span style="color: #008000">底图</span>
<span style="color: #800080">$src_path</span> = <span style="color: #800080">$QRlogo</span>; <span style="color: #008000">//</span><span style="color: #008000">覆盖图,我们就继续用上面的那张图QRlogo
//创建图片实例</span>
<span style="color: #800080">$dst</span> = imagecreatefromstring(<span style="color: #008080">file_get_contents</span>(<span style="color: #800080">$dst_path</span><span style="color: #000000">));
</span><span style="color: #800080">$src</span> = imagecreatefromstring(<span style="color: #008080">file_get_contents</span>(<span style="color: #800080">$src_path</span><span style="color: #000000">));
</span><span style="color: #008000">//</span><span style="color: #008000">获取覆盖图的宽高</span>
<span style="color: #0000ff">list</span>(<span style="color: #800080">$src_w</span>,<span style="color: #800080">$src_h</span>) = <span style="color: #008080">getimagesize</span>(<span style="color: #800080">$src_path</span><span style="color: #000000">);
</span><span style="color: #008000">/*</span><span style="color: #008000">*
*
* PHP函数:imagecopymerge()/imagecopy()
*
* bool imagecopymerge ( resource $dst_im,resource $src_im,int $src_h,int $pct )
* 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
*
</span><span style="color: #008000">*/</span><span style="color: #000000">
imagecopymerge(</span><span style="color: #800080">$dst</span>,<span style="color: #800080">$src</span>,20,120,<span style="color: #800080">$src_w</span>,<span style="color: #800080">$src_h</span>,100<span style="color: #000000">);
</span><span style="color: #0000ff">list</span>(<span style="color: #800080">$dst_w</span>,<span style="color: #800080">$dst_h</span>) = <span style="color: #008080">getimagesize</span>(<span style="color: #800080">$dst_path</span><span style="color: #000000">);
imagepng(</span><span style="color: #800080">$dst</span>,'./img/aaa.png'<span style="color: #000000">);
imagedestroy(</span><span style="color: #800080">$dst</span><span style="color: #000000">);
imagedestroy(</span><span style="color: #800080">$src</span><span style="color: #000000">);
}
} (注:很多参考网上现有的资料,如果有错误,欢迎留言指正!) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
