国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

canvas之人臉美白

lbool / 1084人閱讀

摘要:下面就講解一下,移動(dòng)端上傳照片,旋轉(zhuǎn),摳圖以及圖片美白效果原理。

下面就講解一下,移動(dòng)端上傳照片,旋轉(zhuǎn),摳圖,以及圖片美白效果原理。

一、上傳照片

下面是兩種上傳照片的方法

1、此方法被廢棄,希望能給大家一點(diǎn)提示,和思考的空間

a、通過改變file的值獲取圖片路徑,并把路徑添加到img元素中,在頁面中展示

b、圖片上傳,可以用form表單上傳,但是獲取不到返回值,可以用ajaxfileupload.js上傳
    
    

2、通過canvas畫布上傳照片,此方法被推薦

 a、照片展示,通過file獲取圖片路徑,畫到canvas上,在用base64轉(zhuǎn)化一下

 b、上傳圖片,通過ajax post上傳
    
    
    
    
總結(jié):之所以先第二種方案,因?yàn)榈谝环N方法,直接上傳最原始圖片,圖片尺寸大小都會(huì)影響服務(wù)器的速度,而且圖片太大會(huì)導(dǎo)致上傳失敗,而用canvas先縮放圖片尺寸大小,可以很好的完成上傳
二、旋轉(zhuǎn)圖片

在上傳過程中,如果不對(duì)圖片進(jìn)行處理,會(huì)因?yàn)榕臄z角度,圖片展示效果不會(huì)達(dá)到預(yù)期效果,而且不會(huì)進(jìn)行五官識(shí)別
此方法主要借助exif.js獲取照片拍攝角度進(jìn)行旋轉(zhuǎn)

checkImgAngel=function(n,m,h){
    EXIF.getData(n, function () {
        EXIF.getAllTags(n);
        var  imgOrient= EXIF.getTag(n, "Orientation");
        switch(imgOrient){
            case 6://需要順時(shí)針(向左)90度旋轉(zhuǎn)
                rotateImg(n,"left");
                break;
            case 8://需要逆時(shí)針(向右)90度旋轉(zhuǎn)
                rotateImg(n,"right");
                break;
            case 3://需要180度旋轉(zhuǎn)
                rotateImg(n,"right");//轉(zhuǎn)兩次
                rotateImg(n,"right");
                break;
        }
    })
}
function rotateImg(img, direction) {
    var canvas = document.createElement("canvas")
    var ctx = canvas.getContext("2d")
    $(document.body).append(canvas)

    var min_step = 0;
    var max_step = 3;
    if (img == null)return;
    var height = img.height;
    var width = img.width;
    var step = 2;
    if (step == null) {
        step = min_step;
    }
    if (direction == "right") {
        step++;
        step > max_step && (step = min_step);
    } else {
        step--;
        step < min_step && (step = max_step);
    }

    //旋轉(zhuǎn)角度以弧度值為參數(shù)
    var degree = step * 90 * Math.PI / 180;
    var ctx = canvas.getContext("2d");
    switch (step) {
        case 0:
            canvas.width = width;
            canvas.height = height;
            ctx.drawImage(img, 0, 0);
            break;
        case 1:
            canvas.width = height;
            canvas.height = width;
            ctx.rotate(degree);
            ctx.drawImage(img, 0, -height);
            break;
        case 2:
            canvas.width = width;
            canvas.height = height;
            ctx.rotate(degree);
            ctx.drawImage(img, -width, -height);

            break;
        case 3:
            canvas.width = height;
            canvas.height = width;
            ctx.rotate(degree);
            ctx.drawImage(img, -width, 0);

            break;
    }
}
三、人臉摳圖

此效果需要借助騰訊優(yōu)圖API完成,騰訊優(yōu)圖會(huì)提供人臉五官坐標(biāo),通過canvas的clip()方法,對(duì)人臉進(jìn)行摳圖

function drawLine(data,status){
    var data = setData1(data,status)//接口返回?cái)?shù)據(jù)并處理
    ctx.save();
    var len=data.length
    ctx.beginPath();
    ctx.moveTo(data[0].x,data[0].y)
    for(var i=1;i

注意:因?yàn)榉祷氐淖鴺?biāo)并不全是五官的輪廓坐標(biāo),所以需要開發(fā)人員先對(duì)數(shù)據(jù)進(jìn)行處理,剔除不需要的坐標(biāo)

四、人臉美白

主要原理是canvas的getImageData方法,獲取到每一個(gè)像素點(diǎn)的rgba值,進(jìn)行運(yùn)算,在通過putImageData方法,重新渲染圖片,先通過isPointInPath方法,把需要美白的部分點(diǎn)push到一個(gè)數(shù)組中

對(duì)臉部點(diǎn)進(jìn)行處理,push到imgDataArr數(shù)組中

var imgDataArr=[]
function drawLine(data,status){
    var data = setData1(data,status)//接口返回?cái)?shù)據(jù)并處理
    var len=data.length
    ctx.beginPath();
    ctx.moveTo(data[0].x,data[0].y)
    for(var i=1;i

通過接口返回的臉部五官數(shù)據(jù)獲取像素點(diǎn),通過drawLine()在canvas上畫出臉部模型,在通過isPointInPath方法,收集臉部數(shù)據(jù)

美白效果

function setImagedata(){
    var imgData = ctx.getImageData(0,0,canvas.width,canvas.height)
    for(var i= 0 ;i           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105961.html

相關(guān)文章

  • 人臉識(shí)別和語音識(shí)別智能照相機(jī)

    摘要:語音識(shí)別,語義理解一站式解決之智能照相機(jī)人臉識(shí)別如果有代碼排版和圖片顯示問題,請(qǐng)?jiān)L問博客。前面寫了兩篇語音識(shí)別,語義理解的博文,分別是語音在線聽書和語音記帳軟件,本篇是語音智能照相機(jī)。 語音識(shí)別,語義理解一站式解決之智能照相機(jī)(人臉識(shí)別,olami) 如果有代碼排版和圖片顯示問題,請(qǐng)?jiān)L問CSDN博客。轉(zhuǎn)載請(qǐng)注明CSDN博文地址:http://blog.csdn.net/ls0609/a...

    jonh_felix 評(píng)論0 收藏0
  • 前端人臉檢測(cè)指南

    摘要:的發(fā)布已經(jīng)有一些時(shí)日,其主要的提供的能力是給予前端直接可用的特征檢測(cè)的接口包括條形碼人臉文本檢測(cè)。本文將簡(jiǎn)單的對(duì)其進(jìn)行介紹,對(duì)前端進(jìn)行人臉檢測(cè)進(jìn)行普適性的講解。 Shape Detection API 的發(fā)布已經(jīng)有一些時(shí)日,其主要的提供的能力是給予前端直接可用的特征檢測(cè)的接口(包括條形碼、人臉、文本檢測(cè))。本文將簡(jiǎn)單的對(duì)其進(jìn)行介紹,對(duì)前端進(jìn)行人臉檢測(cè)進(jìn)行普適性的講解。(本文不講算法~望...

    dockerclub 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<