반응형
PHP는 여러 세트의 이미지와 텍스트 포스터를 생성하고, PHP는 포스터를 생성하고, PHP는 이미지를 생성하고, PHP 이미지에 텍스트를 작성합니다.
여러 장의 사진을 병합하여 한 장의 사진을 만들 때 사용합니다
getbgqrcode() 포스터 함수 생성
1. 파라미터 설명
$imageDefault 기본 그림 설정
$textDefault 기본 텍스트 설정
$background 배경 그림
$filename에서 생성된 파일 이름
$config 여러 장의 그림과 텍스트 구성을 여기에 씁니다
설정 파라미터는 다음과 같습니다
'left'=>1080, 왼쪽 픽셀까지 거리
'top' => 3150, 위쪽 픽셀까지 거리
'right'=>0,
'bottom'=>0,
'width'=>530, 너비
'height'=>530,고
'opacity'=>100 질량
$imageDefault = array(
'left'=>1080,
'top'=>3150,
'right'=>0,
'bottom'=>0,
'width'=>530,
'height'=>530,
'opacity'=>100,
'url'=> tomedia($store['logo']), //이미지url
);
$textDefault = array(
'text'=> 'aaaaaaaaaa',
'left'=>500,
'top'=>1600,
'fontSize'=>150, // 글꼴 크기
'fontColor'=> '255,255,255', // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf", // 글꼴 경로
);
public function getbgqrcode($imageDefault, $textDefault, $background, $filename="), $config=array()){
// 만약 신문에 무슨 잘못이 있다면, 먼저 이 header를 주석하여 해석할 수 있다.
if(empty($filename) header("content-type: image/png");
// 배경 방법
$backgroundInfo = getimagesize($background)
$ext = image_type_to_extension($backgroundInfo[2], false);
$backgroundFun = 'imagecreatefrom'.$ext;
$background = $backgroundFun($background);
$backgroundWidth = imagesx($background); // 배경 폭
$backgroundHeight = imagesy($background); // 배경 높이
$imageRes = imageCreatetruecolor($backgroundWidth,$backgroundHeight);
$color = imagecolorallocate($imageRes, 0, 0, 0);
imagefill($imageRes, 0, 0, $color)
imagecopyresampled($imageRes, $background, 0, 0, 0, 0, 0, imagesx($background), imagesy($background), imagesx($background), imagesy($background);
// 그림을 처리했습니다
if ( !empty($config['image']){
foreach ($config['image'] as $key => $val) {
$val = array_merge($imageDefault,$val);
$info = getimagesize($val['url']);
$function = 'imagecreatefrom'.image_type_to_extension($info[2], false);
if($val['stream']){
// 문자열 그림 스트림을 전송했다면
$info = getimagesizefromstring($val['url']);
$function = 'imagecreatefromstring';
}
$res = $function($val['url']);
//$res = imagecreatefrompng($val['url']);
$resWidth = $info[0];
$resHeight = $info[1];
// 아트보드 설정, 지정한 사이즈로 확대/축소
$canvas=imagecreatetruecolor($val['width'), $val['height']),
imagefill($canvas, 0, 0, $color)
(함수, 중요 인자가//자원을 목표로 시작한 대상 자원에서 유래한 x, y 좌표의 시작에서 자원, x, y 좌표의 목표, 높은 자원을 폭 자원을 h w의 높은 소스, 너비. w h )
(0,,, $ canvas 0, $ res, 0,0[' width '], [' height '], $ val, $ val $ resHeight $ resWidth);imagecopyresampled
([' left '] $ val) [' left '] [' left '] $ val.;= $ val [' left '] <0?$backgroundWidth - abs - $ val [' width '] :$val
([' top '] $ val) [' top '] [' top '] $ val.;= $ val [' top '] <0?$backgroundHeight - abs - $ val [' height '] :$val
//. 그림을 놓다
왼쪽 위 (, [' left '], $ imageRes $ canvas [' top '] $ val [' right '], $ val [' bottom '], $ val [' width '], $ val [' height '], $ val [' opacity '] $ val $ val) imagecopymerge 오른쪽 ; //을 아래에 너비, 높이 투명도입니다.
}
}
문자를 처리하고 있다.//
if ( !([' text '] $ config). empty ) {
{([' text '] $ config as $ key = > $ val) foreach
(, $ textDefault $ val);$ val = array_merge
(,, $ R $ B $ G), ([' fontColor '], ',' $ val). list = explode
(,,, $ G $ imageRes $ B $ R);$ fontColor = imagecolorallocate
[' left ']. [' left '];$ val = $ val [' left '] <0?$backgroundWidth - abs ([' left '] $ val) :$val
[' top ']. [' top '];$ val = $ val [' top '] <0?$backgroundHeight - abs ([' top '] $ val) :$val
(, [' fontSize '], $ imageRes [' angle '] $ val [' left '], $ val [' top '], $ val, $ val, $ fontColor [' fontPath '] [' text '] $ val $ val);imagettftext
}
}
//이미지 생성
if ( !empty($filename){
$filename = $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/shareimg/".$filename;
$res = imagejpeg ($imageRes, $filename, 90)
// 로컬로 저장
imagedestroy($imageRes)
}else{
imagejpeg ($imageRes)
// 브라우저에 표시
imagedestroy($imageRes)
}
}
2.사용 예
public function creatPoster( ){
global $_W;
global $_GPC;
$imageDefault = array(
'left'=>1080,
'top'=>3150,
'right'=>0,
'bottom'=>0,
'width'=>530,
'height'=>530,
'opacity'=>100
);
$textDefault = array(
'text'=> 'aaaaaaaaaa',
'left'=>500,
'top'=>1600,
'fontSize'=>150, // 글꼴 크기
'fontColor'=> '255,255,255', // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",
);
$font = $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf]
$background = URL_APP_RESOURCE.'image/bg.jpg';/포스터 맨 아래 배경
$config['image'][0]['url'] = $this->creatqrcode($id,$_W['mid']),
//가게 로고
$config['image'][1] = array(
'left'=>120,
'top'=>1895,
'right'=>0,
'bottom'=>0,
'width'=>1685,
'height'=>860,
'opacity'=>100,
'url'=> tomedia($store['logo']),
);
$main = imagecreatefromjpeg ($background)
$width = imagesx ($main)
$fontSize = 130;
$fontBox = imagettfbox($fontSize, 0, $font, $store['storename']);
$x = ceil($width - $fontBox[2]) / 2); // 텍스트의 수평 위치 계산
// 가게 이름
//$config['text']['text'] = $store['storename'];
$config['text'][] = array(
'text'=>$store['storename'],
'left'=>$x,
'top'=>1820,
'fontSize'=>130, // 글꼴 크기
'fontColor'=> '255,255,255', // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",
);
// 소개
$config['text'][] = array(
'text'=> '회원가입'. (10 - $store['discount']) * 7. '%',
'left'=>1040,
'top'=>2920,
'fontSize' =>70, // 글꼴 크기
'fontColor'=> '255,255,255', // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",
);
$config['text'][] = array(
'text'=> '준회원이 계산하여 돌려드립니다.'(10 - $store['discount']) * 3. '%',
'left'=>200,
'top'=>2920,
'fontSize' =>70, // 글꼴 크기
'fontColor' => '0,0,0' , // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",
);
$config['text'][] = array(
'text'=>$city['name'],
'left'=>175,
'top'=>1475,
'fontSize' =>60, // 글꼴 크기
'fontColor'=> '251,97,87' , // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",
);
$config['text'][] = array(
'text'=>$num,
'left'=>810,
'top'=>1475,
'fontSize' =>60, // 글꼴 크기
'fontColor'=> '251,97,87' , // 글꼴 색상
'angle'=>0,
'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",
);
$filename = $id.time( ).'qrcode_bg.jpg';
Store::getbgqrcode($imageDefault,$textDefault,$background,$filename,$config);
$filename = URL_APP_RESOURCE.'shareimg/'.$filename;
$ruleimg = URL_APP_RESOURCE.'image/share_rule.jpg';
//echo "<center><img src=".$filename.""width="400"/></center>",
$json = ['result' => 1, 'msg' => '0', 'img' => $filename, 'rule' => $ruleimg];
new_message($json);
}
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 작업 redis 예제 (0) | 2022.11.09 |
---|---|
php 본문에 있는 모든 그림 가져오기 (0) | 2022.11.09 |
PHP 구현 데몬 방식, 리눅스 백그라운드 실행 (0) | 2022.11.02 |
PHP는 서버를 이용하여 정시 작업을 실현한다 (0) | 2022.11.02 |
php 그림을 mysql bolb 형식으로 저장 (0) | 2022.11.02 |