国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > HTML5 > 正文

canvas繪圖按照contain或者cover方式適配并居中顯示

2024-09-05 07:22:49
字體:
來源:轉載
供稿:網友

canvas繪圖時drawImage,需要繪制的圖片大小不同,比例各異,所以就需要像html+css布局那樣,需要contain和cover來滿足不同的需求。

contain

保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來。也就是說,可以完整地將圖片顯示出來。

圖片按照contain模式放到固定盒子的矩形內,則需要對圖片進行一定的縮放。

原則是:

如果圖片寬高不等,使圖片的長邊能完全顯示出來,則原圖片高的一邊縮放后等于固定盒子對應的一邊,等比例求出另外一邊,

如果圖片寬高相等,則根據固定盒子的寬高來決定縮放后圖片的寬高,固定盒子的寬大于高,則縮放后的圖片高等于固定盒子的高度,對應求出另外一邊即可,反之亦然。

        /**         * @param {Number} sx 固定盒子的x坐標,sy 固定盒子的y左標         * @param {Number} box_w 固定盒子的寬, box_h 固定盒子的高         * @param {Number} source_w 原圖片的寬, source_h 原圖片的高         * @return {Object} {drawImage的參數,縮放后圖片的x坐標,y坐標,寬和高},對應drawImage(imageResource, dx, dy, dWidth, dHeight)         */        function containImg(sx, sy , box_w, box_h, source_w, source_h){            var dx = sx,                dy = sy,                dWidth = box_w,                dHeight = box_h;            if(source_w > source_h || (source_w == source_h && box_w < box_h)){                dHeight = source_h*dWidth/source_w;            dy =  sy + (box_h-dHeight)/2;            }else if(source_w < source_h || (source_w == source_h && box_w > box_h)){                dWidth = source_w*dHeight/source_h;                dx = sx + (box_w-dWidth)/2;            }            return{                dx,                dy,                dWidth,                dHeight            }        }        var c=document.getElementById("myCanvas");        var ctx=c.getContext("2d");        ctx.fillStyle = '#e1f0ff';        //固定盒子的位置和大小--圖片需要放在這個盒子內        ctx.fillRect(30, 30, 150, 200);        var img = new Image();        img.onload = function () {            console.log(img.width,img.height);                        var imgRect = containImg(30,30,150,200,img.width,img.height);            console.log('imgRect',imgRect);            ctx.drawImage(img, imgRect.dx, imgRect.dy, imgRect.dWidth, imgRect.dHeight);                     }        img.src = "./timg2.jpg";          //注:img預加載模式下,onload應該放在為src賦值的上面,以避免已有緩存的情況下無法觸發onload事件從而導致onload中的事件不執行的情況發生

cover

保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來。也就是說,圖片通常只在水平或垂直方向是完整的,另一個方向將會發生截取。

原理:

按照固定盒子的比例截取圖片的部分

        /**         * @param {Number} box_w 固定盒子的寬, box_h 固定盒子的高         * @param {Number} source_w 原圖片的寬, source_h 原圖片的高         * @return {Object} {截取的圖片信息},對應drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)參數        */        function coverImg(box_w, box_h, source_w, source_h){            var sx = 0,                sy = 0,                sWidth = source_w,                sHeight = source_h;            if(source_w > source_h || (source_w == source_h && box_w < box_h)){                sWidth = box_w*sHeight/box_h;                sx = (source_w-sWidth)/2;            }else if(source_w < source_h || (source_w == source_h && box_w > box_h)){                sHeight = box_h*sWidth/box_w;                sy = (source_h-sHeight)/2;            }            return{                sx,                sy,                sWidth,                sHeight            }        }        var c=document.getElementById("myCanvas");        var ctx=c.getContext("2d");        ctx.fillStyle = '#e1f0ff';        //固定盒子的位置和大小--圖片需要放在這個盒子內        ctx.fillRect(30, 30, 150, 200);        var img = new Image();        img.onload = function () {            console.log(img.width,img.height);                        var imgRect = coverImg(150,200,img.width,img.height);            console.log('imgRect',imgRect);            ctx.drawImage(img, imgRect.sx, imgRect.sy, imgRect.sWidth, imgRect.sHeight, 30, 30, 150, 200);         }        img.src = "./timg2.jpg";          //注:img預加載模式下,onload應該放在為src賦值的上面,以避免已有緩存的情況下無法觸發onload事件從而導致onload中的事件不執行的情況發生

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
99久热re在线精彩视频| 中文字幕第一页在线| 国产一级黄色大片| 激情综合丁香| 国产性色视频| 国产一区二区三区美女秒播| 久久亚洲天堂| 国产区av在线| 免费三级毛片| 国产午夜三区视频在线| 91欧洲在线视精品在亚洲| 99福利在线| 尤物视频在线观看| 亚洲午夜久久久久中文字幕| 任你操在线观看| 91av久久| 香蕉视频免费在线播放| 国产在线一二三| 999福利在线视频| 久久国产精品久久久久久小说| 毛片在线视频| 国产www.大片在线| 国产主播色在线| 永久av在线| 国产精品久久麻豆| 狠狠插狠狠操| 日本动漫同人动漫在线观看| 国产系列在线观看| xxx国产精品| 国产91足控脚交在线观看| 久久久久久久久免费视频| 国产偷激情在线| 国产美女极品在线| 另类视频在线| 麻豆网站在线| 俺来俺也去www色在线观看| 精品推荐蜜桃传媒| 91九色在线看| 精品乱码一区二区三四区视频| 国产精品一卡二卡三卡| 日本久久网站| 日本视频在线| 丝袜理论片在线观看| 97国产视频| 精品国产一区二区三区不卡在线 | 91久久精品国产性色| 国产69精品久久app免费版| 91美女在线| 在线观看视频污| 在线一二三区| a视频在线看| 日本片在线看| 久久久久久91精品色婷婷| 午夜羞羞小视频在线观看| 国产精品bbw一区二区三区| 国产特级淫片免费看| 丁香花视频在线观看| 日本视频在线观看一区二区三区| 92国产在线视频| 中文一区在线观看| 伊人av免费在线观看| 亚洲国产aⅴ精品| www在线视频观看| 中文字幕在线视频免费观看| 国产极品视频| 亚洲第一成人在线视频| 欧美亚洲另类在线观看| 中文字幕在线视频观看| 国产成人夜间影院在线观看| 在线激情小视频| 免费午夜一级| 国产爆初菊在线观看免费视频网站 | 97人人在线| 国产原创av在线| 国产精品白浆视频免费观看| 四虎精品成人a在线观看| 国产91大片| 亚洲an天堂an在线观看| 中文字幕第一页在线| 91免费日韩| 成人av小说网| eeuss影影院www在线播放| 中文字幕在线播放网址| 中文字幕中文字幕在线中高清免费版 | 久久综合精品视频| 国产永久av在线| 91麻豆精品国产91久久| 国产在线更新| 日本视频二区| 国产盗摄一区二区| 在线国产中文字幕| 国产精品伦一区二区三区级视频频| 国产人成在线观看| 久久精品视频免费看| 中文字幕2020第一页| 国产精品xxx电影| 国产免费网址| 免费av在线| 亚洲国产日韩成人综合天堂| 在线视频中文字幕| 亚洲精品在线播放视频| 国产高清在线a视频大全| 成人精品福利| 国产在线中文字幕| 本道综合精品| 国产精品白浆流出视频| 国产深夜福利| 精品欧美日韩一区二区| 精品久久av| jlzzjlzz欧美| 二区三区中文字幕| 中文字幕在线影视资源| 最近高清中文在线字幕在线观看| 国产美女在线一区二区三区| 另类高清dbsm日本tvav| 免费中文字幕| 国产在线小视频| 天天爱天天色| 国产激情在线视频| av一本在线| 亚洲国产精华液| 免费a在线观看| 国产九色porn网址| 国产视频三级在线观看播放| aaa大片在线观看| 噜噜噜噜噜在线视频| 国产亚洲精品一区二区在线观看| 国产精品777一区二区| 91欧洲在线视精品在亚洲| 伊人伊人av电影| 免费99热在线观看| 国产精品久久一区二区三区不卡| a√在线视频| 国产中文在线视频| 91美女主播在线视频| 精品国产一区二区三区四区阿崩| av在线天天| 国产jizz| 二区中文字幕| av在线播放国产| 中文字幕在线免费观看| 亚洲天堂电影在线观看| 午夜国产福利在线| а√最新版在线天堂| 6699久久国产精品免费| 国产在线超碰| 三级小说一区| 国产成人高清精品| 国产一级在线| 久久精品蜜桃| 伊人福利在线| 国产区高清在线| 99热在线观看免费| 久久国产热视频| 在线免费观看污| 国产精品美女视频免费观看软件| 九九精品视频在线观看九九| 亚洲an天堂an在线观看| 91精品国产91久久久久久青草| 国产精品一品| 国产一卡2卡3卡免费网站| 国产免费视频| 午夜视频在线观看网站午夜视频在线| 欧美高清视频| 国产男女av| 欧美性猛交xxxx免费看蜜桃| 在线天堂av| 亚洲久草视频| 热99在线观看| 国产永久免费高清在线观看| 国产农村一级特黄α**毛片| 国产在线播放av| 国产精品视频福利一区二区 | 中文字幕2019第三页| 精品视频一区二区观看| 99在线播放| 九色福利视频| 丁香综合在线| 91高清国产| 亚洲精品aaaa| 国产原创在线播放| 综合图区亚洲白拍在线 | 国内精品一区视频| 1区2区3区在线| 在线看黄网站| 九九色在线观看| 国产日韩欧美第一页| 夜夜操com| 欧美性猛交p30| 国产一二三视频| 在线一区二区三区精品| 超碰在线影院| 精品三级久久久久久久电影聊斋| а√天堂8资源在线官网| 国产网站免费观看| 人人九九精品| 国产成人综合亚洲欧美在| 国产在线观看a视频| 在线视频三区| 国产精品18久久久久久久久久|