电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP實現(xiàn)圖片合并的示例詳解

瀏覽:207日期:2022-06-11 08:13:35
目錄
  • 業(yè)務(wù)需求
  • 最終效果
  • 準(zhǔn)備工作
  • 完整過程
  • 常見的問題

業(yè)務(wù)需求

我們需要一個微信小程序碼,但是是需要提供給別人掃碼的但是只有一個純粹的小程序碼是不好看的,所以需要推廣的海報圖片。再結(jié)合文字

最終效果

準(zhǔn)備工作

1、需要海報的底圖

2、小程序碼的圖片

代碼部分結(jié)合YII2但不影響使用

完整過程

第一步:生成小程序碼圖片

第二步:縮放小程序碼的圖片大小 (如果尺寸符合海報大小可省略) 280-1280px

第三步:將縮放后的小程序圖片合成到背景圖片

第四步:合成文字信息

第一步:生成小程序碼圖片 (我使用的場景是無限制小程序碼code地址 三種自行選擇)

//微信小程序 小程序碼    public static function getWeChatSmallProgramCode($scene)    {$AccessToken = self::getAccessToken();$url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $AccessToken;$postData = [    "scene" => $scene,    "page" => "pages/index/index",    "width"=>930];$postData = json_encode($postData);$contentData = self::sendPost($url, $postData);return $contentData; //如果圖片大小符合這開啟base64位圖片地址也可以完成圖片的合并合文字的合并//return self::base64UrlCode($contentData, "image/png");    }    protected static function sendPost($url, $post_data)    {$options = array(    "http" => array("method" => "POST","header" => "Content-type:application/json",//header 需要設(shè)置為 JSON"content" => $post_data,"timeout" => 60//超時時間    ));$context = stream_context_create($options);return file_get_contents($url, false, $context);    }    //二進(jìn)制轉(zhuǎn)圖片image/png    public static function base64UrlCode($contents, $mime)    {$base64 = base64_encode($contents);return ("data:" . $mime . ";base64," . $base64);    }

第二步:縮放小程序碼的圖片大小

/**     * 縮放圖片尺寸     * @param $img_path string 圖片地址     * @param $new_width     * @param $new_height     * @param $new_img_path string 新的圖片地址     */    public static function picZoom($img_path,$new_width,$new_height,$new_img_path)    {//獲取尺寸list($width, $height, $img_type, $attr) = getimagesize($img_path);$imageinfo = [    "width" => $width,    "height" => $height,    "type" => image_type_to_extension($img_type, false),    "attr" => $attr];$fun = "imagecreatefrom" . $imageinfo["type"];$image = $fun($img_path);//創(chuàng)建新的幕布$image_thump = imagecreatetruecolor($new_width, $new_height);//復(fù)制源文件imagecopyresampled($image_thump, $image, 0, 0, 0, 0, $new_width, $new_height, $imageinfo["width"], $imageinfo["height"]);imagedestroy($image);$image = $image_thump;$func = "image" . $imageinfo["type"];$func($image, $new_img_path);    }

第三步:將縮放后的小程序圖片合成到背景圖片

/**     * 圖片合并     * 將源圖片覆蓋到目標(biāo)圖片上     * @param string $dstPath 目標(biāo)圖片路徑 背景圖     * @param string $srcPath 源圖片路徑   內(nèi)容圖     * @param int $dstX 源圖片覆蓋到目標(biāo)的X軸坐標(biāo)     * @param int $dstY 源圖片覆蓋到目標(biāo)的Y軸坐標(biāo)     * @param int $srcX     * @param int $srcY     * @param int $pct 透明度     * @param string $filename 輸出的文件名,為空則直接在瀏覽器上輸出顯示     * @return string $filename 合并后的文件名     */    public static function picMerge($dstPath, $srcPath, $dstX = 0, $dstY = 0, $srcX = 0, $srcY = 0, $pct = 100, $filename = "")    {//創(chuàng)建圖片的實例$dst = imagecreatefromstring(file_get_contents($dstPath));$src = imagecreatefromstring(file_get_contents($srcPath));//獲取水印圖片的寬高list($src_w, $src_h) = getimagesize($srcPath);//將水印圖片復(fù)制到目標(biāo)圖片上,最后個參數(shù)50是設(shè)置透明度,這里實現(xiàn)半透明效果//imagecopymerge($dst, $src, 80, 125, 0, 0, $src_w, $src_h, 100);imagecopymerge($dst, $src, $dstX, $dstY, $srcX, $srcY, $src_w, $src_h, $pct);//如果水印圖片本身帶透明色,則使用imagecopy方法//imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);//輸出圖片list($dst_w, $dst_h, $dst_type) = getimagesize($dstPath);switch ($dst_type) {    case 1://GIFif (!$filename) {    header("Content-Type: image/gif");    imagegif($dst);} else {    imagegif($dst, $filename);}break;    case 2://JPGif (!$filename) {    header("Content-Type: image/jpeg");    imagejpeg($dst);} else {    imagejpeg($dst, $filename);}break;    case 3://PNGif (!$filename) {    header("Content-Type: image/png");    imagepng($dst);} else {    imagepng($dst, $filename);}break;    default:break;}imagedestroy($dst);imagedestroy($src);    }

第四步:合成文字信息

/**     *  添加文字到圖片上     * @param $dstPath string 目標(biāo)圖片     * @param $fontPath string 字體路徑     * @param $fontSize string 字體大小     * @param $text string 文字內(nèi)容     * @param $dstY string 文字Y坐標(biāo)值     * @param string $filename 輸出文件名,為空則在瀏覽器上直接輸出顯示     * @return string 返回文件名     */    public static function addFontToPic($dstPath, $fontPath, $fontSize, $text, $dstY, $filename = "")    {ob_end_clean();//創(chuàng)建圖片的實例$dst = imagecreatefromstring(file_get_contents($dstPath));//打上文字$fontColor = imagecolorallocate($dst, 255, 255, 255);//字體顏色$width = imagesx($dst);$height = imagesy($dst);$fontBox = imagettfbbox($fontSize, 0, $fontPath, $text);//文字水平居中實質(zhì)imagettftext($dst, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), $dstY, $fontColor, $fontPath, $text);//輸出圖片list($dst_w, $dst_h, $dst_type) = getimagesize($dstPath);switch ($dst_type) {    case 1://GIFif (!$filename) {    header("Content-Type: image/gif");    imagegif($dst);} else {    imagegif($dst, $filename);}break;    case 2://JPGif (!$filename) {    header("Content-Type: image/jpeg");    imagejpeg($dst);} else {    imagejpeg($dst, $filename);}break;    case 3://PNGif (!$filename) {    header("Content-Type: image/png");    imagepng($dst);} else {    imagepng($dst, $filename);}break;    default:break;}imagedestroy($dst);return $filename;    }

外部的調(diào)用

/**     * 根據(jù)店鋪id 和名稱 合成A5 圖片小程序圖片     * @param $shop_id     * @param $shop_name     * @return array     */    public static function generateWeChatAppletImage($shop_id, $shop_name)    {//1 生成小程序碼//2 合成小程序碼到背景圖片$sceneStr = "?shop_id=" . $shop_id;$weChatAppImgBaseData = WxTools::getWeChatSmallProgramCode($sceneStr);$weChatAppImgPath = "./weChatAppImg/shop_code_" . $shop_id . ".jpg";file_put_contents($weChatAppImgPath, $weChatAppImgBaseData);//合并到背景圖片中$beiJinImgPath = "./weChatAppImg/weChatBJ.jpg";$mergeImgFile = "./weChatAppImg/shop_mini_program" . $shop_id . ".jpg";GenerateCodeImg::picMerge($beiJinImgPath, $weChatAppImgPath, 408, 714, $srcX = 0, $srcY = 0, $pct = 100, $mergeImgFile);//3 合成文字$fontPath = "./plus/fonts/SourceHanSansCN-Bold.ttf";$fontSize = 40;$dstY = 640;GenerateCodeImg::addFontToPic($mergeImgFile, $fontPath, $fontSize, $shop_name, $dstY, $mergeImgFile);$weChatCodeImgUrL = \Yii::$app->request->hostInfo . "/weChatAppImg/shop_code_" . $shop_id . ".jpg";$weChatAppImgUrl = \Yii::$app->request->hostInfo . "/weChatAppImg/shop_mini_program" . $shop_id . ".jpg";return [    "weChatCodeImgUrL" => $weChatCodeImgUrL,    "weChatAppImgUrl" => $weChatAppImgUrl,];    }

常見的問題

1文字合并的時候出現(xiàn)亂碼?

第一檢測一下字體是否是正常tff字體 如果不知道去C://windows/Fonts 隨便找一個 微軟雅黑都行

2、英文阿拉布數(shù)字正常 中文亂碼

$text = mb_convert_encoding("呵呵呵","UTF-8","GBK");

$text = mb_convert_encoding("呵呵呵","html-entities","UTF-8");

設(shè)置看看

到此這篇關(guān)于PHP實現(xiàn)圖片合并的示例詳解的文章就介紹到這了,更多相關(guān)PHP圖片合并內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格]| 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 学生作文网_中小学生作文大全与写作指导 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 电抗器-能曼电气-电抗器专业制造商 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 安徽集装箱厂-合肥国彩钢结构板房工程有限公司 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 |