婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解FireFox下Canvas使用圖像合成繪制SVG的Bug

詳解FireFox下Canvas使用圖像合成繪制SVG的Bug

熱門標簽:會聲會影怎樣做地圖標注效果 江蘇高頻外呼系統線路 標準智能外呼系統 洛陽市伊川縣地圖標注中心官網 搜狗星級酒店地圖標注 電銷機器人視頻 地圖標注自己去過的地方 高德地圖標注錯誤怎么修改 平頂山電子地圖標注怎么修改

本文適合適合對canvas繪制、圖形學、前端可視化感興趣的讀者閱讀。

楔子

所有的事情都會有一個起因。

最近產品上需要做一個這樣的功能:給一些圖形進行染色處理。想想這還不是順手拈來的事情,早就研究過圖形染色的技術。于是我把之前寫好的兩種算法發給了小伙伴,讓他參照實現,第一種算法是操縱像素、第二種使用了圖像合成:globalCompositeOperation。

所有的事情都可能會有意外,寫程序更是如此了。

沒多久,小伙伴說,第二種算法在firefox下不起作用。

探索原因

聽說有bug,心中一驚。我測試過了的,FireFox下面也測試過的。于是我打開火狐瀏覽器,啟動示例,發現是好的,沒有問題。

但是小伙伴集成到產品中就有問題。 差別在哪兒呢? 通過一起排查,最終發現我的示例代碼和產品中代碼的一個區別是:示例代碼用的是png圖片,而產品中用的是svg圖片。

難道是svg圖片的問題,拿一個svg圖片放到示例代碼中,果然不對。結論已經明顯:

FireFox瀏覽器下,用Canvas下繪制繪制SVG圖的時候,globalCompositeOperation的設置將不生效。

下面是一段用于測試的代碼,ctx.globalCompositeOperation = 'destination-out' 表示用源圖像的形狀去挖空目標圖像。

在其他瀏覽器中,以下代碼中是生效的,又挖空的效果。但是在

在FireFox 下不生效:

<html>
<head>
    <script>
        function init() {
            var canvas = document.getElementById('c');
            var ctx = canvas.getContext('2d');
            var img = new Image();
            img.onload = function () {
                ctx.drawImage(img, 0, 0, img.width * 2, img.height * 2);
                ctx.globalCompositeOperation = 'destination-out';
            }
            img.src = 'diffuse.png';
            var svg = new Image;
            svg.src = "./d.svg";
                    
            function drawPoint(pointX, pointY) {
                ctx.drawImage(svg, pointX - svg.width / 4, pointY - svg.height / 4, svg.width / 2, svg.height / 2);
            }
            canvas.addEventListener('click', function (e) {
                drawPoint(e.clientX, e.clientY);
            }, false);
        }
    </script>
</head>
<body onload="init();" style="background: red">
    <div>
        <canvas id="c" width="1000" height="1000"></canvas>
    </div>
</body>
</html>

如何解決

找到問題的原因了,解決方法其實簡單。

事情往往就是這樣,很多時候,找到問題所在往往比解決問題要難。

解決方案其實很簡單

代碼中加入判斷,判斷瀏瀏覽器是否是FireFox。

如果是,則先把svg圖片繪制到臨時的canvas上面。

后續繪制用臨時的canvas替代svg圖片。

比如上面代碼可以改進如下:

function init() {
            var canvas = document.getElementById('c');
            var ctx = canvas.getContext('2d');
            var img = new Image();
            img.onload = function () {
                ctx.drawImage(img, 0, 0, img.width * 2, img.height * 2);
                ctx.globalCompositeOperation = 'destination-out';
            }
            img.src = 'diffuse.png';
            var svg = new Image;
            svg.src = "./d.svg";
                      
        var tempCanvas = svg;  
                         if(isFirefox){
                             svg.onload = function(){
                                  tempCanvas = document.createElement('canvas');
                                tempCanvas.width = svg.width;
                                tempCanvas.height = svg.height;
                                var tempCtx = tempCanvas.getContext('2d');
                                tempCtx.drawImage(svg,0,0,svg.width,svg.height);
                             }           
                         }
                      
            function drawPoint(pointX, pointY) {
                            
                ctx.drawImage(tempCanvas, pointX - svg.width / 4, pointY - svg.height / 4, svg.width / 2, svg.height / 2);
            }
            canvas.addEventListener('click', function (e) {
                drawPoint(e.clientX, e.clientY);
            }, false);
        }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:果洛 阿克蘇 蚌埠 廣東 鄂爾多斯 廣西 常德 松原

巨人網絡通訊聲明:本文標題《詳解FireFox下Canvas使用圖像合成繪制SVG的Bug》,本文關鍵詞  詳解,FireFox,下,Canvas,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解FireFox下Canvas使用圖像合成繪制SVG的Bug》相關的同類信息!
  • 本頁收集關于詳解FireFox下Canvas使用圖像合成繪制SVG的Bug的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美白人最猛性xxxxx69交| 日韩精品一区二区在线| 国产一区福利在线| 奇米影视7777精品一区二区| 亚洲免费毛片网站| 亚洲丝袜精品丝袜在线| 亚洲欧美国产77777| 国产亚洲精品福利| 亚洲国产成人私人影院tom| 国产精品亲子伦对白| 亚洲电影你懂得| 国产一区二区久久| 91色九色蝌蚪| 日韩欧美黄色影院| 亚洲免费资源在线播放| 麻豆国产一区二区| 99久久99久久免费精品蜜臀| 日韩欧美中文字幕一区| 亚洲另类中文字| 九九在线精品视频| 欧美在线一二三四区| 久久综合网色—综合色88| 亚洲永久免费av| 国产精品夜夜爽| 欧美日韩一卡二卡三卡| 中文字幕免费在线观看视频一区| 亚洲小说欧美激情另类| 不卡影院免费观看| 亚洲精品一线二线三线| 午夜视频一区二区三区| 一本大道av伊人久久综合| 国产日产欧美一区二区视频| 日韩中文字幕91| 色天天综合久久久久综合片| 国产亚洲欧美日韩在线一区| 日韩中文字幕一区二区三区| 在线日韩av片| 一区二区三区中文免费| 国产激情一区二区三区| 3d成人h动漫网站入口| 中文字幕一区二区视频| 国产一区二区伦理片| 精品国产乱码久久久久久牛牛 | 欧美一区午夜精品| 亚洲码国产岛国毛片在线| 在线精品视频免费播放| 中文成人av在线| 亚洲超碰97人人做人人爱| 99精品视频在线免费观看| 成人看片黄a免费看在线| 欧美一区二区三区视频免费 | 午夜视频在线观看一区二区| caoporn国产一区二区| 久久色视频免费观看| 麻豆免费精品视频| 色成年激情久久综合| 一区二区视频在线| av电影在线观看一区| 久久久影视传媒| 国产在线观看免费一区| 日韩免费成人网| 日本伊人午夜精品| 欧美三级日韩在线| 亚洲国产日韩综合久久精品| 一本大道av一区二区在线播放| 欧美猛男gaygay网站| 午夜精品久久久| 欧美一区二区性放荡片| 婷婷久久综合九色综合伊人色| 欧美老肥妇做.爰bbww| 热久久国产精品| 日韩欧美一级二级三级久久久| 美女视频第一区二区三区免费观看网站| 欧美日本在线观看| 一区二区三区欧美久久| 成人福利视频在线| 国产精品久久一卡二卡| 国产高清不卡一区| 国产精品久久久久久久久动漫 | 国产九色精品成人porny| 精品电影一区二区| 国产一区二区三区久久悠悠色av| 欧美丝袜丝交足nylons| 亚洲精品福利视频网站| 色狠狠一区二区| 亚洲另类在线视频| 欧美日韩国产一级| 男女男精品视频网| 欧美日韩激情在线| 日本午夜精品一区二区三区电影 | 久久精品欧美一区二区三区麻豆| 国产一区视频在线看| 国产精品系列在线| 一本一道综合狠狠老| 午夜精品一区二区三区电影天堂 | 亚洲一区二区黄色| 欧美久久久久久久久| 日韩制服丝袜先锋影音| 免费看黄色91| 中文字幕av一区二区三区高 | 欧美精品一区二区三区蜜桃| 亚洲一区二区高清| 日韩一区二区三区高清免费看看| 国产精品99久久久久久有的能看| 亚洲精选在线视频| a在线欧美一区| 午夜精品成人在线视频| 国产性色一区二区| 欧美午夜精品一区二区蜜桃| 精品一区二区在线免费观看| 亚洲欧美日韩综合aⅴ视频| 欧美大片在线观看| 色视频成人在线观看免| 免费欧美高清视频| 亚洲黄一区二区三区| 久久亚洲免费视频| 91久久人澡人人添人人爽欧美| 精品制服美女丁香| 亚洲主播在线观看| 久久影院视频免费| 这里只有精品99re| 色吧成人激情小说| 国产91精品一区二区麻豆网站 | av不卡免费电影| 免费精品视频在线| 91成人在线精品| 国产成人三级在线观看| 五月综合激情网| 亚洲天堂网中文字| 久久精品人人做人人综合| 91麻豆精品91久久久久久清纯| 92国产精品观看| 久久99热这里只有精品| 亚洲精品欧美综合四区| 欧美激情综合在线| 精品久久久久久综合日本欧美| 欧美日韩国产综合一区二区 | 国产精品国产a| 精品国精品国产尤物美女| 欧美日韩三级视频| 日本韩国一区二区三区| 成人免费视频一区二区| 国产精品中文欧美| 国产精品一品二品| 国产一区二区三区久久久| 奇米一区二区三区| 婷婷成人激情在线网| 一区二区三区.www| 国产精品激情偷乱一区二区∴| 国产欧美精品一区aⅴ影院 | 日韩一级黄色片| 欧美三级日本三级少妇99| 91福利在线免费观看| 国产成人激情av| 国产成人av一区二区三区在线| 蜜臀久久99精品久久久久久9| 一区二区欧美视频| 亚洲自拍另类综合| 亚洲国产综合在线| 亚洲欧美一区二区三区孕妇| 亚洲欧美日韩国产综合| 亚洲国产高清在线| 国产精品高清亚洲| 一区二区三区在线免费观看| 亚洲精品国产无天堂网2021| 一区二区三区国产精品| 午夜精品久久久久影视| 免费av成人在线| 国产一区二区三区高清播放| 国产黄色成人av| 丁香桃色午夜亚洲一区二区三区| 成人深夜福利app| 99视频在线观看一区三区| 97精品视频在线观看自产线路二| 97精品电影院| 午夜精品视频一区| 精品一区二区三区香蕉蜜桃| 国产一区二区三区在线观看免费视频 | 成a人片亚洲日本久久| 色偷偷一区二区三区| 欧美在线免费视屏| 日韩精品一区二区在线观看| 国产精品丝袜黑色高跟| 亚洲一区二区三区美女| 日本va欧美va精品发布| 国产a级毛片一区| 欧美亚日韩国产aⅴ精品中极品| 91精品国模一区二区三区| 国产午夜精品久久| 国产精品久久久久永久免费观看| 亚洲精品一二三| 三级欧美在线一区| 国产一区二区三区视频在线播放| 91免费版在线| 欧美一级二级三级乱码| 国产精品一区二区在线观看不卡| 日韩一区二区精品在线观看| 国产日韩欧美精品一区| 洋洋成人永久网站入口| 国产一区二区三区在线观看免费视频|