<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;
include ROOT_PATH."extend/phpqrcode/qrlib.php";
use QRcode;
/**
 * 首页接口
 */
class Material extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * 首页

     *
     *
     *
     */
    public function index()
    {
        $list = Db::table("fa_ex_fb")->where("id","between",[14501,15005])->select();
        foreach($list as $k=>$v){
                $png = $this->qcode($v["name5"],$v["name3"]);
        }
//        $png = $this->imageEdit("http://taote.com/uploads/20210713/f46f8fb6a5a46f119fa00c4ffd9c89a1.jpg","http://taote.com/uploads/qrcode/106324.png");
//        $image = $this->imageAddText("./uploads/material.png","来自某某某站长的分享",50,100,14,"./uploads/material.png");
    }
    /**生成二维码*/
    public function qcode($popularize_url,$popularize_id){
        QRcode::png($popularize_url,"./uploads/qrcode/".$popularize_id.".png");
    }





    /**添加图片**/
    public function imageEdit($url,$qrcode){
        $dst_path = $url;
        $src_path = $qrcode ;
        //创建图片的实例
        $dst = imagecreatefromstring(file_get_contents($dst_path));
        $src = imagecreatefromstring(file_get_contents($src_path));
        //获取水印图片的宽高
        list($src_w, $src_h) = getimagesize($src_path);
        //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
        imagecopymerge($dst, $src, 460, 940, 0, 0, 200, 200, 100);

//        $font = './uploads/fonts.ttf';//字体
//        $black = imagecolorallocate($dst, 0, 0, 0);//字体颜色
//        imagefttext($dst, 13, 0, 20, 20, $black, $font, '快乐编程');

        //如果水印图片本身带透明色,则使用imagecopy方法
        //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);
        //输出图片
        $dst_type = 3;
        list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
        switch ($dst_type) {
            case 1://GIF
                header('Content-Type: image/gif');
                imagegif($dst);
                break;
            case 2://JPG
                header('Content-Type: image/jpeg');
                imagejpeg($dst);
                break;
            case 3://PNG
                header('Content-Type: image/png');
                imagepng($dst,"./uploads/material.png");
                break;
            default:
                break;
        }
        imagedestroy($dst);
        imagedestroy($src);
    }
    /**
     * 给图片加文字
     * $bg_path    背景图地址
     * $text			要添加的文字
     * $x           文字在背景图片上位置的左边距,单位:px (例:436)
     * $y           文字在背景图片上位置的上边距,单位:px (例:1009)
     * $font_size	字体大小,单位:px (例:20)
     * $echo_path   生成的新图片存放路径
     **/
    public function imageAddText($bg_path, $text, $x, $y, $font_size, $echo_path){
        $dst_path = $bg_path;
        $dst = imagecreatefromstring(file_get_contents($dst_path));
        /*imagecreatefromstring()--从字符串中的图像流新建一个图像,返回一个图像标示符,其表达了从给定字符串得来的图像
        图像格式将自动监测,只要php支持jpeg,png,gif,wbmp,gd2.*/

        $font = __METHOD__.'./uploads/fonts.ttf';
        $black = imagecolorallocate($dst, 255,255,0);
        imagefttext($dst, 20, 0, 150, 120, $black, $font, $text);
        /*imagefttext($img,$size,$angle,$x,$y,$color,$fontfile,$text)
        $img由图像创建函数返回的图像资源
        size要使用的水印的字体大小
        angle(角度)文字的倾斜角度,如果是0度代表文字从左往右,如果是90度代表从上往下
        x,y水印文字的第一个文字的起始位置
        color是水印文字的颜色
        fontfile,你希望使用truetype字体的路径*/
        list($dst_w,$dst_h,$dst_type) = getimagesize($dst_path);
        /*list(mixed $varname[,mixed $......])--把数组中的值赋给一些变量
        像array()一样,这不是真正的函数,而是语言结构,List()用一步操作给一组变量进行赋值*/
        /*getimagesize()能获取到什么信息?
        getimagesize函数会返回图像的所有信息,包括大小,类型等等*/
        switch($dst_type){
            case 1://GIF
                header("content-type:image/gif");
                imagegif($dst);
                break;
            case 2://JPG
                header("content-type:image/jpeg");
                imagejpeg($dst);
                break;
            case 3://PNG
                header("content-type:image/png");
                imagepng($dst,$echo_path);
                break;
            default:
                break;
            /*imagepng--以PNG格式将图像输出到浏览器或文件
            imagepng()将GD图像流(image)以png格式输出到标注输出(通常为浏览器),或者如果用filename给出了文件名则将其输出到文件*/
        }
        imagedestroy($dst);
    }
}