개발 꿀팁/PHP

phpqrcode.php를 사용하여 QR코드를 생성하여 배경 그림으로 통합

Jammie 2022. 7. 20. 12:29
반응형

phpqrcode.php를 사용하여 QR코드를 생성하여 배경 그림으로 통합
1.phpqrcode 라이브러리를 찾은 phpqrcode.php 아래프로젝트에 실어 당신의 개발 코드에 도입
(1) 다운로드 주소: http://phpqrcode.sourceforge.net (압력해제 후 phpqrcode.php만 되면 됩니다)
(2) 도입: include_once("/library/phpqrcode/phpqrcode.php";)
(3) 코드 직접 부착

	/**
     *2차원 바코드 생성에서 있었다. 배경 화면에
     * $bg_img    배경 그림 주소
     * $url       QR코드 내용 url
     * $x   QR코드의 배경화면 위치 왼쪽 거리, 단위: px (예: 436)
     * $y   QR코드의 배경화면 위 위치, 단위: px (예: 1009)
     * $qrcode_size  QR코드(사각형)의 사이즈,단위:px(예:238)8)
     * $white_edge   QR코드 화이트 에지 사이즈
     * $echo_path   생성된 QR코드 포스터 이미지 저장 경로
     **/
    public function getActivityImg($bg_img, $url, $x=0, $y=0, $qrcode_size, $white_edge=0, $echo_path){
    	include_once("/library/phpqrcode/phpqrcode.php");  //코드 파일 머리 위에 올려놔
        $errorCorrectionLevel = QR_ECLEVEL_L;          //오류 허용 등급
        $matrixPointSize = 2;                           //QR코드 이미지 크기 생성
        $qrcode = "qrcod.png";							//QR코드 저장에 사용되는 변수이지 실제 그림이 아닙니다

        //QR코드 이미지 생성
        //파라미터 내용: QR코드 저장 내용, 생성 저장, 오류 방지 등급, QR코드 크기, 화이트 에지 크기
        QRcode::png($url, $qrcode, $errorCorrectionLevel, $matrixPointSize, $white_edge);	//저는 화이트 사이드 사이즈가 0인데 화이트 사이드까지 사이즈 조절이 안되서 배경화면에 잘 안맞아요 (화이트 사이드 디자인 가능 ^.^)

        //배경 그림 및 QR코드 병합
        $background = imagecreatefromstring(file_get_contents($bg_img));	//자원
        $qrcode_res = imagecreatefromstring(file_get_contents($qrcode));	//자원
        list($src_w, $src_h) = getimagesize($qrcode);
		//파라미터 내용: 타겟 이미지 연결 자원, 소스 이미지 연결 자원, 타겟 X 좌표점, 타겟 Y 좌표점, 소스 X 좌표점, 소스 Y 좌표점, 타겟 폭, 타겟 높이, 소스 이미지의 폭, 소스 이미지의 높이(파라미터에 의문이 있으면 도착):https://www.php.net/manual/zh/function.imagecopyresampled.php 가서 봐, 다른 블로그에 낙서해)
        imagecopyresampled($background, $qrcode_res, $x, $y, 0, 0, $qrcode_size, $qrcode_size, $src_w, $src_h);

         //로컬 폴더로 출력, 그림 생성 경로를 반환합니다
        if(!is_dir(dirname($echo_path))){
            mkdir(dirname($echo_path), 0755, true);
            chown(dirname($echo_path), 'nobody');
            chgrp(dirname($echo_path), 'nobody');
        }

        imagepng($background,$echo_path);	//생성된 배경 그림 + QR 코드를 대상 경로 아래에 놓습니다
        imagedestroy($background);
        imagedestroy($qrcode_res);
        return $echo_path;
    }

 

반응형