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

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能

這篇具有很好參考價值的文章主要介紹了千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

??作者簡介,黑夜開發(fā)者,CSDN領(lǐng)軍人物,全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者?,阿里云社區(qū)專家博主,2023年6月csdn上海賽道top4。
??數(shù)年電商行業(yè)從業(yè)經(jīng)驗,歷任核心研發(fā)工程師,項目技術(shù)負責(zé)人。
??本文已收錄于專欄:100個JavaScript的小應(yīng)用,微信公眾號開發(fā)。
??歡迎 ??點贊?評論?收藏


??一、前言

中秋節(jié)是我國的重要傳統(tǒng)節(jié)日,今年直接和國慶節(jié)湊到了一起,放一個8天的小長假,是不是很興奮呢。為了增加節(jié)日氣氛,許多人會更換自己的社交媒體頭像,如微信頭像。使用與中秋或者國慶主題相關(guān)的圖片。本篇博文將介紹如何使用PHP通過微信公眾號獲取用戶頭像,并且將頭像傳遞給JavaScript開發(fā)一個實現(xiàn)換中秋頭像的功能。

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

通過本篇文章的閱讀,您將獲取如下的實戰(zhàn)知識:

  1. 熟悉了解微信公眾號的基本開發(fā)流程。
  2. 學(xué)習(xí)到微信公眾號網(wǎng)頁授權(quán)獲取用戶基本信息這個板塊的開發(fā)。
  3. 基本掌握html,css等網(wǎng)頁前端的組成與基本開發(fā)流程。
  4. Javascript, canvas用于圖片合成,頭像生成的場景使用。
  5. 學(xué)習(xí)到一部分PHP相關(guān)的后端知識

??二、開發(fā)流程概述

首先我們得通過微信公眾號開發(fā)獲取到用戶的頭像,然后我們需要準(zhǔn)備一些素材。這個圖片素材需要是鏤空圖 PNG,用來鑲嵌在用的真實頭像上面。接下來,我們需要創(chuàng)建一個HTML頁面,并在其中引入一個JavaScript文件。我們將使用JavaScript來操作DOM元素和Canvas元素,實現(xiàn)換裝功能。如果您熟悉HTMLJavaScript的基本知識那就更好了。

??三、配置微信公眾號

??3.1 AppId和AppSecret獲取

AppIdAppSecret得先獲取到,請看下圖,記得一定要保存好AppSecret。
千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

??3.1 添加網(wǎng)頁授權(quán)域名

網(wǎng)頁授權(quán)域名是必須要添加的,否則公眾號是不回允許在沒有通過的域名下面進行授權(quán)。如果你遇到了一些問題,可以排查一下是不是這個地方的配置。在公眾號設(shè)置>功能設(shè)置里面添加,加域名就行。

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

這里可能要傳文件驗證,如果傳了文件還是有問題,可以檢查一下文件權(quán)限啥的,或者看看能不能手動訪問。

??3.3 白名單設(shè)置

白名單主要是添加自己服務(wù)器所在的IP地址到公眾號后臺,這樣只有指定的服務(wù)器才允許與公眾號接口通信。如果白名單沒有設(shè)置,獲取access_token的時候可能會報如下錯誤。

{"errcode":40164,"errmsg":"invalid ip xxx ipv6 ::ffff:xxxx, not in whitelist rid: 6503251e-14033bf0-774d3d3e"}

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

在安全中心>IP白名單處進行設(shè)置,白名單設(shè)置了可能會有短暫的延時生效,如果當(dāng)時不能訪問,可以等會再試一下。

??四、功能開發(fā)

??4.1 獲取用戶微信頭像

這個部分主要通過PHP進行開發(fā),核心是如何與公眾號進行API交互。

??4.1.1 引導(dǎo)用戶進入授權(quán)頁面

構(gòu)建一個URL,用戶點擊后將跳轉(zhuǎn)到微信授權(quán)頁面,同時攜帶著您設(shè)置的回調(diào)URL。

$redirect_uri = urlencode('http://your-domain.com/callback.php'); // 回調(diào)URL,需要urlencode
$appid = 'Your Appid'; // 公眾號AppID
$scope = 'snsapi_userinfo'; // snsapi_base或snsapi_userinfo
$state = 'STATE'; // 自定義參數(shù),可不填
$auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state={$state}#wechat_redirect";
header('Location: ' . $auth_url); // 跳轉(zhuǎn)到授權(quán)頁面

在到達callback.php之前,如果已經(jīng)關(guān)注了公眾號的用戶,可以直接獲取到用戶頭像,否則則會提示授權(quán),用戶同意之后才能獲取頭像,這便是網(wǎng)頁授權(quán)獲取用戶頭像的核心功能。授權(quán)的情況可以見下圖真實案例。

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

??4.1.2 獲取授權(quán)code并換取access_token

用戶同意授權(quán)后,微信會重定向到您設(shè)置的回調(diào)URL,并攜帶一個code參數(shù)。在回調(diào)頁面(callback.php)中獲取到該code,并使用它來換取access_tokenopenid

$code = $_GET["code"]; // 授權(quán)code
$appid = 'Your Appid'; // 公眾號AppID
$secret = 'Your App Secret'; // 公眾號App Secret

// 通過code換取access_token
$token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code={$code}&grant_type=authorization_code";
$token_data = json_decode(file_get_contents($token_url), true);

$access_token = $token_data['access_token']; // 獲取到的access_token
$openid = $token_data['openid']; // 用戶的openid

??4.1.3 獲取用戶基本信息

使用獲取到的access_tokenopenid,可以調(diào)用以下API來獲取用戶基本信息:

$userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN";
$userinfo_data = json_decode(file_get_contents($userinfo_url), true);

$nickname = $userinfo_data['nickname']; // 用戶昵稱
$headimgurl = $userinfo_data['headimgurl']; // 用戶頭像鏈接
// 可以根據(jù)需要獲取其他用戶信息字段
header('Location: https://www.xxx.wang/index.html?avatar_url=' . $headimgurl

上面代碼的最后一句是重點,將獲取到的微信頭像傳遞給index.html,后面javascript會用到。

??4.2 JavaScript實現(xiàn)用戶換頭像

??4.2.1 創(chuàng)建HTML結(jié)構(gòu)(index.php)

在HTML文件中,我們可以使用<input type="file">元素來讓用戶選擇要上傳的頭像文件。同時,我們還需要一個<canvas></canvas>元素來繪制新的頭像。

<!DOCTYPE html>
<html>
<head>
    <title>頭像換裝</title>
</head>
<body>
    <h1>頭像換裝</h1>
    <div id="avatar">
    	<img src="./img/head0.png" alt="0" id="avatar_template" style="z-index: 1000;pointer-events: none;">
        <img src="" alt="" id="avatar_img" class="pinch-zoom">
     </div>
     <p class="hide">
        <canvas style="width:500px;height:500px;" id="cvs"></canvas>
     </p>
     <div style="display: none;" class="avatar-final">
      <div class="finished-img">
        <img id="finishedImg" src=""/>
        <br>
      </div>
      <p class="control">
        <a class="css_btn_create" id="download">生成</a>
      </p>
    </div>
    <script src="main.js"></script>
    <script>loadImage()</script>
</body>
</html>

這里我用photoshop制作這么一個相框圖片,里面加載頭像,就是上面的head0.png

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

??4.2.2 拼接頭像和相框

其中avatar_template就是我們的頭像相框,avatar_img就是我們的微信頭像,通過下面的方式來講頭像放到img標(biāo)簽里面。并且將拼接好的圖片放到finishedImg里面。

// 將url的圖片加載到頁面
function loadImage() {
  let imgUrl = getQueryString('avatar_url');
  // 通過路徑解析處高清圖像
  imgUrl = headImgHD(imgUrl);
  $('#avatar_img').attr('src', imgUrl);
  $('#avatar_img').attr('crossOrigin', 'anonymous');
  curImage = $('#avatar_template').attr('src');
  drawToCanvas(imgUrl, curImage, $('#finishedImg'));
}

// 開始整合繪制圖片到finishedImg里面
function drawToCanvas(img1, img2, showObj) {
  let cvs = document.getElementById('cvs');
  let showSize = 230;
  let size = 800;
  cvs.width = size;
  cvs.height = size;
  let ctx = cvs.getContext('2d');
  let image1 = new Image;
  image1.setAttribute('crossOrigin', 'anonymous');
  image1.src = img1;
  image1.onload = function () {
    let width = image1.width < image1.height ? size : size * (image1.width / image1.height);
    let height = image1.width > image1.height ? size : size * (image1.height / image1.width);
    let x = image1.width < image1.height ? 0 : (size * (image1.width / image1.height) - size) / 2;
    let y = image1.width > image1.height ? 0 : (size * (image1.height / image1.width) - size) / 2;

    document.getElementById('avatar_img').style.showSize = width + 'px';
    document.getElementById('avatar_img').style.showSize = height + 'px';
    document.getElementById('avatar_img').style.marginLeft = -x + 'px';
    document.getElementById('avatar_img').style.marginTop = -y + 'px';

    ctx.drawImage(image1, -x, -y, width, height);
    let image2 = new Image;
    image2.setAttribute('crossOrigin', 'anonymous');
    image2.src = img2;
    image2.onload = function () {
      ctx.drawImage(image2, 0, 0, size, size);
      let canvas = document.getElementById('cvs');
      //獲取二維碼中的圖片地址
      let src_xp = canvas.toDataURL('image/jpeg');
      $(showObj).attr('src', src_xp)
    }
  }
}

??4.2.3 生成頭像為一個圖片

當(dāng)用戶完成頭像換裝后,我們可以提供一個按鈕來讓用戶生成新的頭像。這里,我們可以使用html2canvas方法將頁面元素轉(zhuǎn)化為一個整體的圖片,并將其顯示在頁面中。這個時候我們可以長按圖片保存,然后上傳到我的頭像就完成了換頭像的功能。

$('#download').click(function (ev) {
  takeScreenShot();
});

function takeScreenShot() {
  html2canvas(document.getElementById('avatar'), {
    allowTaint:false,
    dpi: 400,
    useCORS: true,
    onrendered: function(canvas) {
      document.body.appendChild(canvas);
      var canvas = $('canvas')[1];
      //獲取二維碼中的圖片地址
      let src_xp = canvas.toDataURL('image/jpeg');
      console.log(src_xp);
      $('#finishedImg').attr('src', src_xp)
      $('.avatar-final').show();
      $('#avatar-control').hide();
      $(canvas).hide();
    },
  });
}

最后,一起來看看最終的頭像效果。

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

??五、總結(jié)

本篇博文介紹了如何使用JavaScript開發(fā)一個實現(xiàn)換中秋頭像功能的應(yīng)用程序。我們通過與微信公眾號頭像打通,并使用Html進行頁面繪制。最后,通過Canvas進行圖片整合,并提供一個生成按鈕讓用戶一鍵生成新的頭像。

千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能,100個JavaScript的小應(yīng)用??,公眾號開發(fā),微信,javascript,開發(fā)語言,原力計劃

如果你想直接體驗換頭像的功能,可以關(guān)注下面公眾號回復(fù)【換頭像】。今天的內(nèi)容就到這里,我們下次見。文章來源地址http://www.zghlxwxcb.cn/news/detail-719831.html

到了這里,關(guān)于千里共嬋娟 | 結(jié)合微信公眾號用JavaScript完整開發(fā)實現(xiàn)換中秋頭像的功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue2公眾號跳轉(zhuǎn)小程序 wx-open-launch-weapp 超完整流程

    根據(jù)微信網(wǎng)頁開發(fā) / 開放標(biāo)簽說明文檔 (qq.com)看開放標(biāo)簽?wx-open-launch-weapp 說明,從上往下完整的看到2.1 根據(jù)簽名算法見JS-SDK說明文檔的附錄,所有開放標(biāo)簽列表見文末的附錄1?概述 | 微信開放文檔?獲取wx.config 中相關(guān)簽名等配置參數(shù)(后端通過接口傳給我們) 開發(fā)者調(diào)試需

    2024年04月14日
    瀏覽(42)
  • Uniapp + SpringBoot 開發(fā)微信H5項目 微信公眾號授權(quán)登錄 JAVA后臺(一、配置使用微信公眾平臺測試公眾號)

    Uniapp + SpringBoot 開發(fā)微信H5項目 微信公眾號授權(quán)登錄 JAVA后臺(一、配置使用微信公眾平臺測試公眾號)

    一、接口配置信息填寫校驗 這里需要填寫一個URL和一個Token驗證字符串 我這里是用了natapp內(nèi)網(wǎng)穿透 將本地的后臺8080端口服務(wù)映射到了 http://x7zws8.natappfree.cc https://natapp.cn/在natapp官網(wǎng)注冊賬號并且申請免費隧道 申請完了之后把域名綁定到自己的后臺 后臺接口: SHA1: AesExcep

    2024年03月13日
    瀏覽(29)
  • 微信公眾號開發(fā)以及測試公眾號前端自測網(wǎng)頁授權(quán)

    微信公眾號開發(fā)以及測試公眾號前端自測網(wǎng)頁授權(quán)

    測試號申請(開發(fā)的時候需要使用微信測試號進行開發(fā)) 微信測試號申請地址 進入網(wǎng)頁之后選擇微信登陸,直接用微信掃碼登錄,微信測試號就申請成功了 測試號配置 申請成功之后會有一個測試號管理界面 1、會自動生成appID、appsecret(需要記錄一下,后面會用到)。 2、接口

    2024年02月06日
    瀏覽(13)
  • 微信小程序引導(dǎo)關(guān)注公眾號(超詳細),獲取公眾號openID,是否關(guān)注公眾號信息

    微信小程序引導(dǎo)關(guān)注公眾號(超詳細),獲取公眾號openID,是否關(guān)注公眾號信息

    需求背景:微信小程序里,需要判斷使用該小程序的用戶是否有關(guān)注該小程序關(guān)聯(lián)的公眾號,如未關(guān)注要引導(dǎo)用戶去關(guān)注公眾號(用于公眾號推送信息) 官網(wǎng): https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 接口(獲取Code): 參數(shù): APPID:公眾號的唯

    2024年02月15日
    瀏覽(42)
  • xml建模----詳細完整,易懂結(jié)合代碼分析

    xml建模----詳細完整,易懂結(jié)合代碼分析

    目錄 一.XML建模是什么 二.XML建模有什么作用??? 三.XML建模的案例 ????????????????以config.xml為例 ? ???????將XML配置文件中的元素、屬性、文本信息轉(zhuǎn)換成對象的過程叫做XML建模 XML是被設(shè)計用來 存儲數(shù)據(jù)、攜帶數(shù)據(jù)和交換數(shù)據(jù) 的。 XML不是為了顯示數(shù)據(jù)而設(shè)計

    2024年02月13日
    瀏覽(18)
  • 微信小程序如何跳轉(zhuǎn)到微信公眾號文章,小程序如何關(guān)聯(lián)公眾號或訂閱號

    微信小程序如何跳轉(zhuǎn)到微信公眾號文章,小程序如何關(guān)聯(lián)公眾號或訂閱號

    公眾號最高管理權(quán)限(或能與最高權(quán)限管理者配合操作) 小程序開發(fā)權(quán)限或最高管理權(quán)限 根據(jù)官方資料描述,小程序中展示微信公眾號中的文章需要使用到 web-view web-view 是一個 web 瀏覽器組件,可以用來承載網(wǎng)頁的容器,會自動鋪滿整個頁面 src:webview 指向網(wǎng)頁的鏈接 特別

    2024年02月14日
    瀏覽(109)
  • 【微信公眾號】微信 jsapi 支付大概流程

    【微信公眾號】微信 jsapi 支付大概流程

    jsapi 支付可運用于微信小程序和 h5 jsapi 支付不會彈出二維碼(這點與 native 支付不同) jsapi 支付運用于移動端 native 支付運用于 PC 端 ?? 微信支付需要商家申請 商戶號 ,商務(wù)號需要和小程序或公眾號(服務(wù)號)進行綁定 ?? 在微信商務(wù)平臺可開通 native 支付、jsapi 支付或其

    2024年02月09日
    瀏覽(20)
  • weixin微信開放平臺 微信公眾平臺

    weixin微信開放平臺 微信公眾平臺

    ? 微信小程序 https://mp.weixin.qq.com/ 微信開發(fā)者社區(qū):?https://developers.weixin.qq.com/community/search?query=63002page=1block=1random=1571284603034 申請流程指引: https://kf.qq.com/product/weixinmp.html#hid=99? ? ? ?微信公眾號可以快速注冊認證小程序了==https://www.cnblogs.com/ytkah/articles/6781163.html ? https://dev

    2024年02月08日
    瀏覽(22)
  • 微信公眾號 - Java推送小程序訂閱消息給用戶_java 通過微信公眾號發(fā)送訂閱通知

    微信公眾號 - Java推送小程序訂閱消息給用戶_java 通過微信公眾號發(fā)送訂閱通知

    不啰嗦,我們直接開始! 本文使用體驗版小程序進行調(diào)試。 1、登錄微信公眾平臺 點開下面鏈接,使用微信掃碼 微信公眾平臺 然后選擇一個小程序并登錄 2、在小程序后臺找到Appid、AppSecret、Token、EncodingAESKey等參數(shù) AppSecret忘記了可以自行重置 往下翻,在消息推送這兒能看到

    2024年04月26日
    瀏覽(29)
  • 微信公眾號開發(fā)接入

    微信公眾號開發(fā)接入

    你要有一個微信公眾號,一個內(nèi)網(wǎng)穿透工具 微信公眾號:https://mp.weixin.qq.com/ 官網(wǎng)文檔:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 服務(wù)器配置:設(shè)置與開發(fā)--基本配置--服務(wù)器配置 token:3-32字符,自己生成配置到服務(wù)器配置 公網(wǎng) IP:云服務(wù)器一般都有

    2024年02月06日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包