国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用PHP生成海報圖分享圖片的教程和方法

php,php生成圖片,php生成海報

隨著社交媒體的普及,分享圖片已成為人們日常生活中常見的行為之一。在這個過程中,我們經常需要生成一些精美的海報圖來吸引他人的注意。本文將介紹如何使用PHP來生成海報圖并進行分享。

1. 準備工作

首先,我們需要準備以下數(shù)據和資源:

  1. 待生成海報圖的數(shù)據 $gData,包括圖片地址、標題、博客名稱和日期等信息。

  2. 用于生成二維碼的圖片 $codeName,可以是任意有效的二維碼圖片。

2. 圖片生成函數(shù)

我們將創(chuàng)建一個名為 createSharePng 的函數(shù)來生成海報圖。函數(shù)接收三個參數(shù):$gData(數(shù)據數(shù)組)、$codeName(二維碼圖片)和可選的 $fileName(保存文件名,默認為空)。

具體實現(xiàn)如下:

<?php

/**
 * 分享圖片生成
 * @param $gData  數(shù)據,array
 * @param $codeName 二維碼圖片
 * @param $fileName string 保存文件名,默認空則直接輸入圖片
 */
function createSharePng($gData, $codeName, $fileName = '')
{
    //創(chuàng)建畫布
    $width = 800;
    $height = 800;
    $im = imagecreatetruecolor($width, $height);

    //填充畫布背景色
    //$color = imagecolorallocate($im, 85, 85, 85);
    $color = imagecolorallocate($im, 255, 255, 255);
    imagefill($im, 0, 0, $color);

    //字體文件
    //$font_file_1 = "code_png/hanyishuaixiantiw.ttf";
    $font_file_2 = "../assets/hanyixizhongyuan.ttf";

    //設定字體的顏色
    $font_color_title = ImageColorAllocate($im, 255, 255, 255);
    $font_color_1 = ImageColorAllocate($im, 28, 28, 28);
    $fang_bg_color_1 = ImageColorAllocate($im, 85, 85, 85);
    $fang_bg_color_2 = ImageColorAllocate($im, 255, 255, 255);

    //圖片
    list($g_w, $g_h) = getimagesize($gData['pic']);
    $goodImg = createImageFromFile($gData['pic']);
    imagecopyresized($im, $goodImg, 0, 0, 0, 0, 800, 580, $g_w, $g_h);

    //----------
    //imagefilledrectangle ($im, 0, 580, 580, 800, $fang_bg_color_1);
    //imagefilledrectangle ($im, 580, 580, 800, 800, $fang_bg_color_2);
    //二維碼
    list($code_w, $code_h) = getimagesize($codeName);
    $codeImg = createImageFromFile($codeName);
    imagecopyresized($im, $codeImg, 600, 600, 0, 0, 180, 180, $code_w, $code_h);

    //描述
    $theTitle = cn_row_substr($gData['title'], 2, 20);
    imagettftext($im, 20, 0, 20, 635, $font_color_1, $font_file_2, $theTitle[1]);
    imagettftext($im, 20, 0, 20, 680, $font_color_1, $font_file_2, $theTitle[2]);
    //imagettftext($im, 28,0, 20, 630, $font_color_1 ,$font_file_2, $gData["title"]);

    imagettftext($im, 13, 0, 20, 720, $font_color_1, $font_file_2, $gData["date"]);
    imagettftext($im, 18, 0, 20, 770, $font_color_1, $font_file_2, $gData["blogName"]);

    //輸出圖片
    if ($fileName) {
        imagepng($im, $fileName);
    } else {
        Header("Content-Type: image/png");
        imagepng($im);
    }

    //釋放空間
    imagedestroy($im);
    imagedestroy($goodImg);
    imagedestroy($codeImg);
}

/**
 * 從圖片文件創(chuàng)建Image資源
 * @param $file 圖片文件,支持url
 * @return bool|resource    成功返回圖片image資源,失敗返回false
 */
function createImageFromFile($file)
{
    if (preg_match('/http(s)?:\/\//', $file)) {
        $fileSuffix = getNetworkImgType($file);
    } else {
        $fileSuffix = pathinfo($file, PATHINFO_EXTENSION);
    }

    if (!$fileSuffix) return false;

    switch ($fileSuffix) {
        case 'jpeg':
            $theImage = @imagecreatefromjpeg($file);
            break;
        case 'jpg':
            $theImage = @imagecreatefromjpeg($file);
            break;
        case 'png':
            $theImage = @imagecreatefrompng($file);
            break;
        case 'gif':
            $theImage = @imagecreatefromgif($file);
            break;
        default:
            $theImage = @imagecreatefromstring(file_get_contents($file));
            break;
    }
    return $theImage;
}

/**
 * 獲取網絡圖片類型
 * @param $url  網絡圖片url,支持不帶后綴名url
 * @return bool
 */
function getNetworkImgType($url)
{
    $ch = curl_init(); //初始化curl
    curl_setopt($ch, CURLOPT_URL, $url); //設置需要獲取的URL
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); //設置超時
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //支持https
    curl_exec($ch); //執(zhí)行curl會話
    $http_code = curl_getinfo($ch); //獲取curl連接資源句柄信息
    curl_close($ch); //關閉資源連接
    if ($http_code['http_code'] == 200) {
        $theImgType = explode('/', $http_code['content_type']);

        if ($theImgType[0] == 'image') {
            return $theImgType[1];
        } else {
            return false;
        }
    } else {
        return false;
    }
}
/**
 * 分行連續(xù)截取字符串
 * @param $str  需要截取的字符串,UTF-8
 * @param int $row  截取的行數(shù)
 * @param int $number   每行截取的字數(shù),中文長度
 * @param bool $suffix  最后行是否添加‘...’后綴
 * @return array    返回數(shù)組共$row個元素,下標1到$row
 */
function cn_row_substr($str, $row = 1, $number = 10, $suffix = true)
{
    $result = array();
    for ($r = 1; $r <= $row; $r++) {
        $result[$r] = '';
    }

    $str = trim($str);
    if (!$str) return $result;

    $theStrlen = strlen($str);

    //每行實際字節(jié)長度
    $oneRowNum = $number * 3;
    for ($r = 1; $r <= $row; $r++) {
        if ($r == $row and $theStrlen > $r * $oneRowNum and $suffix) {
            $result[$r] = mg_cn_substr($str, $oneRowNum - 6, ($r - 1) * $oneRowNum) . '...';
        } else {
            $result[$r] = mg_cn_substr($str, $oneRowNum, ($r - 1) * $oneRowNum);
        }
        if ($theStrlen < $r * $oneRowNum) break;
    }

    return $result;
}

/**
 * 按字節(jié)截取utf-8字符串
 * 識別漢字全角符號,全角中文3個字節(jié),半角英文1個字節(jié)
 * @param $str  需要切取的字符串
 * @param $len  截取長度[字節(jié)]
 * @param int $start    截取開始位置,默認0
 * @return string
 */
function mg_cn_substr($str, $len, $start = 0)
{
    $q_str = '';
    $q_strlen = ($start + $len) > strlen($str) ? strlen($str) : ($start + $len);

    //如果start不為起始位置,若起始位置為亂碼就按照UTF-8編碼獲取新start
    if ($start and json_encode(substr($str, $start, 1)) === false) {
        for ($a = 0; $a < 3; $a++) {
            $new_start = $start + $a;
            $m_str = substr($str, $new_start, 3);
            if (json_encode($m_str) !== false) {
                $start = $new_start;
                break;
            }
        }
    }

    //切取內容
    for ($i = $start; $i < $q_strlen; $i++) {
        //ord()函數(shù)取得substr()的第一個字符的ASCII碼,如果大于0xa0的話則是中文字符
        if (ord(substr($str, $i, 1)) > 0xa0) {
            $q_str .= substr($str, $i, 3);
            $i += 2;
        } else {
            $q_str .= substr($str, $i, 1);
        }
    }
    return $q_str;
}

3. 實際使用方法

在準備好以上代碼后,我們可以按照以下步驟來生成海報圖:

  1. 定義待生成海報圖的數(shù)據 $gData。

  2. 調用 createSharePng 函數(shù),并傳入 $gData 和二維碼圖片地址 $codeName,可選擇是否提供保存文件名。

<?php
$gData = [
    'pic' => 'http://www.zghlxwxcb.cn/style/images/logo.png',
    'title' =>'文章標題文章標題文章標題文章標題文章標題文章標題文章標題文章標題',
    'blogName' => '',
    'date' => '2023/11/25'
];
// 直接輸出
createSharePng($gData,'http://www.zghlxwxcb.cn/?site=weixin&url=https://www.explame.com/');
// 輸出到圖片
createSharePng($gData,'http://www.zghlxwxcb.cn?site=weixin&url=https://www.explame.com/','images/share-' . time() . rand(10000, 99999) . '.jpg');
?>

在調用 createSharePng 函數(shù)后,即可生成海報圖并將其輸出或保存為文件。

通過本文的方法,我們可以方便地使用PHP生成海報圖分享圖片。文章來源地址http://www.zghlxwxcb.cn/article/555.html

到此這篇關于使用PHP生成海報圖分享圖片的教程和方法的文章就介紹到這了,更多相關內容可以在右上角搜索或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

原文地址:http://www.zghlxwxcb.cn/article/555.html

如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請聯(lián)系站長進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • PHP 合并圖片,微信小程序合并海報,合并文字

    PHP 合并圖片,微信小程序合并海報,合并文字

    //業(yè)務需求:我們需要一個微信小程序碼,但是是需要提供給別人掃碼的但是只有一個純粹的小程序碼是不好看的,所以需要推廣的海報圖片。再結合文字 ? 最終效果 ? ? 準備工作? 1、需要海報的底圖? 2、小程序碼的圖片? 代碼部分結合YII2但不影響使用 完整過程 第一步:

    2024年02月08日
    瀏覽(24)
  • 微信小程序使用canvas畫布生成二維碼海報分享圖片(完整示例代碼)

    微信小程序使用canvas畫布生成二維碼海報分享圖片(完整示例代碼)

    canvas.js //獲取應用實例 const app = getApp() Page({ /** 頁面的初始數(shù)據 */ data: { // canvas _width: 0, //手機屏寬 _heigth: 0,//手機屏高 swiperHeight: 300,//主圖圖片高度 canvasType: false,//canvas是否顯示 loadImagePath: ‘’,//下載的圖片 imageUrl: ‘https://cos.myfaka.com/car/service/1.jpg’, //主圖網絡路徑 codeU

    2024年04月12日
    瀏覽(103)
  • PHP版滴滴cps聯(lián)盟Api簽名生成和接口調用方法分享

    最近準備把我自己開發(fā)的淘客系統(tǒng)接入滴滴聯(lián)盟平臺,做打車優(yōu)惠券搞傭金。 由于淘客系統(tǒng)本身是PHP開發(fā)的,所以只能采用PHP的代碼接入滴滴聯(lián)盟Api 下面把滴滴聯(lián)盟簽名生成和接口調用的代碼分享給大家 ?

    2024年02月08日
    瀏覽(24)
  • 小程序生成分享海報圖片并保存相冊

    最近開發(fā)的小程序都有分享需求,功能大體為點擊分享按鈕,或主動生成海報后,用戶操作保存對應海報為圖片實現(xiàn)分享。以下是具體實現(xiàn)。 最終生成效果如圖: 此處主要是生成工具庫來生成普通二維碼,如果要生成小程序碼,只能通過后臺接口調用開放API實現(xiàn),且需要小

    2024年02月16日
    瀏覽(24)
  • uniapp 微信小程序 動態(tài)生成海報分享朋友圈,需先保存圖片

    uniapp 微信小程序 動態(tài)生成海報分享朋友圈,需先保存圖片

    直接拷貝代碼,不使用插件,自己純代碼實現(xiàn)。 從相冊 或拍照 選擇一個圖片做海報背景。 大吉大利 今晚吃雞。

    2024年02月11日
    瀏覽(92)
  • 前端生成分享海報的幾種方法

    1,使用painter插件 ? ?適用于微信小程序及uniapp的小程序端 ①,引入插件painter ? ?克隆地址:https://gitcode.net/mirrors/Kujiale-Mobile/Painter ? ?下載的 painter 放到微信小程序的 components 目錄下 ②在json文件中引入 \\\"usingComponents\\\": { ????????\\\"painter\\\":\\\"/components/painter/painter\\\" }, 注:在u

    2024年02月21日
    瀏覽(25)
  • 【微信小程序】用painter插件生成海報分享朋友圈簡單教程

    【微信小程序】用painter插件生成海報分享朋友圈簡單教程

    第一步:去Git下載插件 1.這是核心插件 需要下載全部內容 2.官方文檔 3.新建painter文件夾放到下面 4.在引用文件的json文件引用一下 5.在使用文件里創(chuàng)建個canvas.js文件 獲取canvas.js內容去這個網站 先點擊導出,在點擊復制,復制到canvas.js文件里(替換) 6.然后在對應page頁面的

    2024年02月10日
    瀏覽(104)
  • php 文字生成圖片保存到本地

    你可以使用PHP的GD庫來生成圖片并保存到本地。首先,你需要確保你的PHP環(huán)境已經安裝了GD庫。然后,你可以使用GD庫的函數(shù)來創(chuàng)建一個畫布,并在上面繪制文字。最后,使用`imagepng`或`imagejpeg`函數(shù)將畫布保存為PNG或JPEG格式的圖片文件。以下是一個簡單的示例代碼: ```php ?ph

    2024年02月10日
    瀏覽(21)
  • 小程序使用canvas標簽生成海報并保存圖片

    小程序使用canvas標簽生成海報并保存圖片

    先說一下做功能前的感受,簡直一臉懵逼,第一次用canvas,只知道是個畫布,其余什么都不知道…琢磨了一天才畫出來… 開始之前百度了很久,想看看別人怎么寫的,但是目前網上基本上用的都是wx.createCanvasContext這個api,但是這個api已經停止維護了,要求使用canvas代替, ?

    2024年02月11日
    瀏覽(21)
  • 微信小程序使用canvas生成分享海報功能復盤

    微信小程序使用canvas生成分享海報功能復盤

    近期需要開發(fā)一個微信小程序生成海報分享的功能。在h5一般都會直接采用 html2canvas 或者 dom2image 之類的庫直接處理。但是由于小程序不具備傳統(tǒng)意義的dom元素,所以也沒有辦法采用此類工具。 所以就只能一筆一筆的用 canvas 畫出來了,下面對實現(xiàn)這個功能中遇到的問題做一

    2024年02月16日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包