中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用canvas生成含有微信頭像的邀請海報沒有微信頭像問題

發布時間:2021-05-20 11:17:24 來源:億速云 閱讀:238 作者:小新 欄目:web開發

這篇文章主要介紹了如何使用canvas生成含有微信頭像的邀請海報沒有微信頭像問題,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

最近做了一個微信內訪問的H5頁面,長按分享圖片發送朋友邀請的海報,網上搜索資料,得出解決思路,用canvas將頁面繪制生成圖片,

    問題:canvas 圖片跨域。

    解決過程(填坑歷程):

    1.從網上存在如圖解決辦法     img.crossOrigin  = ""   (專業采坑,數年)。親測無效。很是不解。

    2.網上也存在后端服務解決

   設置header頭,或者nginx 服務配置等 允許訪問。但是,存在問題(圖片大部分為了優化,都會存放在第三方cdn.上面。這是第三方的配置,是否允許,自己很難控制)

    3.解決辦法:采用所有圖片路徑,轉化為base64流來處理。圖片存為本地圖片。這也可以就避開了跨域問題。

    最后個人解決方法:沒有采用第3種保存本地,這樣會增加本地圖片,而且會存在本地跟微信端沒有同步更新的問題,不是用戶最新的頭像。個人是采用遠程下載后直接繪制輸出圖片,這樣圖片就變成本地圖片,解決canvas繪制圖片不支持跨域問題。

   wxheadimg.aspx 頁面代碼:

if (!string.IsNullOrEmpty(Request.QueryString["data"].ToString()))
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Request.QueryString["data"].ToString());
    request.Timeout = 3000;
    WebResponse response = request.GetResponse();
    Stream stream = response.GetResponseStream();
    Bitmap image = new Bitmap(stream);
    //保存為PNG到內存流 
    MemoryStream ms = new MemoryStream();
    image.Save(ms, ImageFormat.Png);
    //重新輸出頭像
    Response.BinaryWrite(ms.GetBuffer());
    Response.End();
    ms.Close();
    response.Close();
    stream.Close();
}

   canvas繪制頁面引用:<img src="wxheadimg.aspx?data=headimgurl" />

    canvas繪制代碼也順便弄出來:

<script type="text/javascript">
window.onload = function ()
{
    var IMAGE_URL;
    function takeScreenshot(){
        var shareContent = document.getElementById('shareMember');//需要截圖的包裹的(原生的)DOM 對象
        var width = shareContent.offsetWidth; //獲取dom 寬度
        var height = shareContent.offsetHeight; //獲取dom 高度
        var canvas = document.createElement("canvas"); //創建一個canvas節點
       var scale = 1; //定義任意放大倍數 支持小數
        canvas.width = width * scale; //定義canvas 寬度 * 縮放
        canvas.height = height * scale; //定義canvas高度 *縮放
        canvas.getContext("2d").scale(scale, scale); //獲取context,設置scale
       //var rect = shareContent.getBoundingClientRect();//獲取元素相對于視察的偏移量
        //canvas.getContext("2d").translate(-rect.left, -rect.top);//設置context位置,值為相對于視窗的偏移量負值,讓圖片復位
        var opts = {
            scale:scale, // 添加的scale 參數
            canvas:canvas, //自定義 canvas
            logging: true, //日志開關
            width:width, //dom 原始寬度
            height:height, //dom 原始高度
            backgroundColor: 'transparent',
        };
        html2canvas(shareContent, opts,{useCORS:true,logging:true}).then(function (canvas)
        {
            IMAGE_URL = canvas.toDataURL("image/png");
            $('.copyImage').attr('src',IMAGE_URL);
        })
    }
    takeScreenshot();
}
</script>

   頁面代碼 :

<div class="shareBox" id="shareMember">
        <div class="top">
            <div class="logo"><img src="wxheadimg.aspx?data=微信頭像網址"/></div>
        </div>
        <div class="middle">
            <img src="makeQRCode.aspx?data=二維碼內容" class="qrcode" />
        </div>
        <img src="" class="copyImage">
    </div>
jpg.shareBox{position:relative}
.shareBox .copyImage{position:absolute;top:0px;left:0px;z-index:999;opacity:0;height:666px;width:666px;}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用canvas生成含有微信頭像的邀請海報沒有微信頭像問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

右玉县| 平昌县| 新沂市| 应城市| 怀安县| 琼海市| 都匀市| 高平市| 洛扎县| 襄垣县| 聊城市| 通州区| 讷河市| 靖江市| 宁明县| 靖边县| 绵竹市| 林周县| 大竹县| 城固县| 梁河县| 金沙县| 南乐县| 张家川| 连江县| 赞皇县| 西贡区| 新津县| 华安县| 泾阳县| 资中县| 甘南县| 吉首市| 凉城县| 东兴市| 江源县| 二手房| 公安县| 安顺市| 娱乐| 云霄县|