<?php
namespace Topxia\MobileBundleV3\Processor\Impl;
use Qiniu\Http\Request;
use Topxia\Common\ArrayToolkit;
use Topxia\Common\bpToolKit;
use Topxia\MobileBundleV3\Processor\BaseProcessor;
use Topxia\MobileBundleV3\Processor\ExamPaperProcessor;
use Endroid\QrCode\QrCode;
use Symfony\Component\BrowserKit\Response;
class ParentTestProcessorImpl extends BaseProcessor implements ExamPaperProcessor
{
public function testQrcode(){
array('lion','crane','fox','kangaroo','parrot','rabbit');
$resultType = 'rabbit';
$backgroundPath = 'assets/img/parent-test/'.$resultType.'.png';
$image_1 = imagecreatefrompng($backgroundPath); //背景图
$qrcodePath = $this->createQrcode($this->request,'http://www.baidu.com', array('type'=>$resultType));
$image_2 = imagecreatefrompng($qrcodePath);
// 创建真彩画布
$image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
// 为真彩画布创建白色背景
$color = imagecolorallocate($image_3, 255, 255, 255);
imagefill($image_3, 0, 0, $color);
//设置透明
imageColorTransparent($image_3, $color);
//把背景复制到画布之上
imagecopyresampled($image_3, $image_1, 0, 0, 0, 0, imagesx($image_1), imagesy($image_1), imagesx($image_1), imagesy($image_1));
$user = $this->getUserService()->getUser(10);
$path_4 = $user['mediumAvatar'];
$image_4 = $this->yuanjiao(str_replace('public://','files/',$path_4)); //头像
imagepng($image_4,'tt.png');
$image_4 = imagecreatefrompng('tt.png');
//设置头像的背景色透明
$color = imagecolorat ($image_4,0,0); //吸颜色
imageColorTransparent($image_4, $color);
//把二维码黏贴到画布之上
imagecopymerge($image_3, $image_2, 570, 1170, 0, 0, imagesx($image_2), imagesy($image_2), 100);
//把头像黏贴到画布之上
imagecopymerge($image_3, $image_4, 315, 50, 0, 0, imagesx($image_4), imagesy($image_4), 100);
// 输出合成图片
imagepng($image_3,'files/parent-test/result.png');
}
/**
* 将图片切成圆角
*/
public function yuanjiao($imgpath){
$ext = pathinfo($imgpath);
$src_img = null;
switch ($ext['extension']) {
case 'jpg':
$src_img = imagecreatefromjpeg($imgpath);
break;
case 'png':
$src_img = imagecreatefrompng($imgpath);
break;
}
$wh = getimagesize($imgpath);
$w = $wh[0];
$h = $wh[1];
$w = min($w, $h);
$h = $w;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $w / 2; //圆半径
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($src_img, $x, $y);
if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
return $img;
}
public function createQrcode($request,$url,$conditions){
$host = $request->getHttpHost();
if(strpos($host,'feimooc') !== false) {
$urlHost = 'https://m.feimooc.com';
}else{
$urlHost = 'http://edureact.bp1010.cn';
}
$qrCode = new QrCode();
$qrCode->setText($url);
$qrCode->setSize(100);
$qrCode->setPadding(10);
switch ($conditions['type']){
//狮子
case 'lion':
$qrCode->setForegroundColor(array('r' => 52, 'g' => 38, 'b' => 150, 'a' => 0));
$qrCode->setBackgroundColor(array('r' => 134, 'g' => 116, 'b' => 254, 'a' => 0));
break;
//野鹤
case 'crane':
$qrCode->setForegroundColor(array('r' => 25, 'g' => 114, 'b' => 135, 'a' => 0));
$qrCode->setBackgroundColor(array('r' => 89, 'g' => 208, 'b' => 240, 'a' => 0));
break;
//狐狸
case 'fox':
$qrCode->setForegroundColor(array('r' => 128, 'g' => 68, 'b' => 15, 'a' => 0));
$qrCode->setBackgroundColor(array('r' => 255, 'g' => 168, 'b' => 92, 'a' => 0));
break;
//袋鼠
case 'kangaroo':
$qrCode->setForegroundColor(array('r' => 105, 'g' => 77, 'b' => 46, 'a' => 0));
$qrCode->setBackgroundColor(array('r' => 254, 'g' => 207, 'b' => 97, 'a' => 0));
break;
//鹦鹉
case 'parrot':
$qrCode->setForegroundColor(array('r' => 11, 'g' => 107, 'b' => 91, 'a' => 0));
$qrCode->setBackgroundColor(array('r' => 82, 'g' => 217, 'b' => 195, 'a' => 0));
break;
//兔子
case 'rabbit':
$qrCode->setForegroundColor(array('r' => 150, 'g' => 48, 'b' => 76, 'a' => 0));
$qrCode->setBackgroundColor(array('r' => 252, 'g' => 131, 'b' => 166, 'a' => 0));
break;
}
$img = $qrCode->get('png');
$filePathDir = 'files/parent-test/';
if (!is_dir($filePathDir)) {
mkdir($filePathDir, 0777, true);
}
$filePath = $filePathDir.'qrcodeTest.png';
file_put_contents($filePath,$img);
$headers = array(
'Content-Type' => 'image/png',
'Content-Disposition' => 'inline; filename="image.png"',
);
return $filePath;
// return new Response($img, 200, $headers);
}
}