Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie, wie Sie Werbeplakate mit PHP erstellen

Teilen Sie, wie Sie Werbeplakate mit PHP erstellen

墨辰丷
墨辰丷Original
2018-05-09 13:53:471785Durchsuche

In diesem Artikel erfahren Sie hauptsächlich, wie Sie PHP zum Generieren von Werbeplakaten verwenden, und mehrere Freunde in Not können sich darauf beziehen!

Häufig besteht die Notwendigkeit, ein Werbeplakat einschließlich eines bestimmten QR-Codes zu erstellen und es mit anderen zu teilen, um den Code zu scannen und die Benutzerempfehlungsbeziehung zu ermitteln.

Eine sorgfältige Analyse, die notwendigen Elemente zur Werbung für Plakate sind Plakathintergrundbilder und QR-Codes, die beide einfach zu generieren sind, aber zu einem Ganzen kombiniert werden müssen Das zweidimensionale Bild muss zum Teilen lokal gespeichert werden. In H5 können Sie es mit Canvas zeichnen, um ähnliche Funktionen wie Screenshots auszuführen, es gibt jedoch viele Einschränkungen beim Einfügen in ein kleines Programm. Anschließend generieren wir das Plakat direkt im Hintergrund und rufen es direkt in der Rezeption auf.

Die Methode ist wie folgt:

/**
 
生成宣传海报
@param array 参数,包括图片和文字
@param string $filename 生成海报文件名,不传此参数则不生成文件,直接输出图片
@return [type] [description]
*/
function createPoster($config=array(),$filename=""){
//如果要看报什么错,可以先注释调这个header
if(empty($filename)) header("content-type: image/png");
$imageDefault = array(
'left'=>0,
'top'=>0,
'right'=>0,
'bottom'=>0,
'width'=>100,
'height'=>100,
'opacity'=>100
);
$textDefault = array(
'text'=>'',
'left'=>0,
'top'=>0,
'fontSize'=>32, //字号
'fontColor'=>'255,255,255', //字体颜色
'angle'=>0,
);
$background = $config['background'];//海报最底层得背景
//背景方法
$backgroundInfo = getimagesize($background);
$backgroundFun = 'imagecreatefrom'.image_type_to_extension($backgroundInfo[2], false);
$background = $backgroundFun($background);
$backgroundWidth = imagesx($background); //背景宽度
$backgroundHeight = imagesy($background); //背景高度
$imageRes = imageCreatetruecolor($backgroundWidth,$backgroundHeight);
$color = imagecolorallocate($imageRes, 0, 0, 0);
imagefill($imageRes, 0, 0, $color);
// imageColorTransparent($imageRes, $color); //颜色透明
imagecopyresampled($imageRes,$background,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']);
$resWidth = $info[0];
$resHeight = $info[1];
//建立画板 ,缩放图片至指定尺寸
$canvas=imagecreatetruecolor($val['width'], $val['height']);
imagefill($canvas, 0, 0, $color);
//关键函数,参数(目标资源,源,目标资源的开始坐标x,y, 源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)
imagecopyresampled($canvas, $res, 0, 0, 0, 0, $val['width'], $val['height'],$resWidth,$resHeight);
$val[&#39;left&#39;] = $val[&#39;left&#39;]<0?$backgroundWidth- abs($val[&#39;left&#39;]) - $val[&#39;width&#39;]:$val[&#39;left&#39;];
$val[&#39;top&#39;] = $val[&#39;top&#39;]<0?$backgroundHeight- abs($val[&#39;top&#39;]) - $val[&#39;height&#39;]:$val[&#39;top&#39;];
//放置图像
imagecopymerge($imageRes,$canvas, $val[&#39;left&#39;],$val[&#39;top&#39;],$val[&#39;right&#39;],$val[&#39;bottom&#39;],$val[&#39;width&#39;],$val[&#39;height&#39;],$val[&#39;opacity&#39;]);//左,上,右,下,宽度,高度,透明度
}
}
//处理文字
if(!empty($config[&#39;text&#39;])){
foreach ($config[&#39;text&#39;] as $key => $val) {
$val = array_merge($textDefault,$val);
list($R,$G,$B) = explode(&#39;,&#39;, $val[&#39;fontColor&#39;]);
$fontColor = imagecolorallocate($imageRes, $R, $G, $B);
$val[&#39;left&#39;] = $val[&#39;left&#39;]<0?$backgroundWidth- abs($val[&#39;left&#39;]):$val[&#39;left&#39;];
$val[&#39;top&#39;] = $val[&#39;top&#39;]<0?$backgroundHeight- abs($val[&#39;top&#39;]):$val[&#39;top&#39;];
imagettftext($imageRes,$val[&#39;fontSize&#39;],$val[&#39;angle&#39;],$val[&#39;left&#39;],$val[&#39;top&#39;],$fontColor,$val[&#39;fontPath&#39;],$val[&#39;text&#39;]);
}
}
//生成图片
if(!empty($filename)){
$res = imagejpeg ($imageRes,$filename,90); //保存到本地
imagedestroy($imageRes);
if(!$res) return false;
return $filename;
}else{
imagejpeg ($imageRes); //在浏览器上显示
imagedestroy($imageRes);
}
}

Zusammenfassung: Auf diese Weise kann eine einfache Möglichkeit zur Zählung der Anzahl der eingeladenen Fans des Veranstalters realisiert werden .

Verwandte Empfehlungen:

PHP WeChat generiert den QR-Code des öffentlichen WeChat-Kontos und scannt das öffentliche Konto mit Parametern

Synchronisierung von PHP WeChat Entwicklungsfans

PHP WeChat-Entwicklungsvorlage Nachrichtenantwort

PHP WeChat öffentliches Konto entwickeln, um persönliche WeChat-Benutzerinformationen zu erhalten

Das obige ist der detaillierte Inhalt vonTeilen Sie, wie Sie Werbeplakate mit PHP erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Beitragseinreichung in PHPNächster Artikel:Beitragseinreichung in PHP