溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在JavaScript中利用Canvas將彩色圖片轉(zhuǎn)換成黑白圖片

發(fā)布時(shí)間:2021-02-25 15:36:45 來(lái)源:億速云 閱讀:428 作者:戴恩恩 欄目:web開(kāi)發(fā)

這篇文章主要介紹了怎么在JavaScript中利用Canvas將彩色圖片轉(zhuǎn)換成黑白圖片,億速云小編覺(jué)得不錯(cuò),現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨億速云小編來(lái)看看吧!

JavaScript的特點(diǎn)

1.JavaScript主要用來(lái)向HTML頁(yè)面添加交互行為。 2.JavaScript可以直接嵌入到HTML頁(yè)面,但寫(xiě)成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。 3.JavaScript具有跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行。

1、convertToGray()

在主體代碼中使用 canvas 元素的id來(lái)獲取畫(huà)布,并設(shè)置畫(huà)布的寬和高為圖片的寬和高,再將上下文初始化為2d畫(huà)布;彩色圖片加載完成后,使用 drawImage() 將圖片加載到上下文,調(diào)用用于完成剩余繪制工作的 getColorData()putColorData();最后為myImage指定彩色圖片的路徑。

2、getColorData()

使用 getImageData()將圖像復(fù)制到 myImage,然后按照以下方式處理圖像:在圖像數(shù)據(jù)數(shù)組中移動(dòng),并收集前三個(gè)字節(jié)(紅色、綠色和藍(lán)色,忽略 alpha)的值;然后,該圖像將三個(gè)字節(jié)的值相加,并將總和除以3,計(jì)算結(jié)果將舍入為一個(gè)整數(shù),并被寫(xiě)入到這三個(gè)字節(jié)的值中。此值對(duì)應(yīng)于顏色的色調(diào),但灰度值從0到255,得到外觀與原始彩色圖片相同的黑白圖片。

3、putColorData()

putImageData() 將已更改的圖像數(shù)據(jù)寫(xiě)回到畫(huà)布,通常用于讓另一個(gè)圖片執(zhí)行實(shí)際處理,并僅在處理完成時(shí)顯示結(jié)果。

var canvas, ctx, myImage;
function convertToGray() {
  myImage = document.getElementById("img");
  canvas = document.getElementById("myCanvas");
  canvas.width = img.width;
  canvas.height = img.height;
  if (canvas.getContext) {
    ctx = canvas.getContext("2d");
    myImage.onload = function() {
      ctx.drawImage(myImage, 0, 0);
      getColorData();
      putColorData();
    }
    myImage.src = "images/img8.jpg";
  }
}
function getColorData() {
  var length = canvas.width * canvas.height;
  myImage = ctx.getImageData(0, 0, canvas.width, canvas.height);
  for (var i = 0; i < length * 4; i += 4) {
    var myRed = myImage.data[i];
    var myGreen = myImage.data[i + 1];
    var myBlue = myImage.data[i + 2];
    myGray = parseInt((myRed + myGreen + myBlue) / 3);
    myImage.data[i] = myGray;
    myImage.data[i + 1] = myGray;
    myImage.data[i + 2] = myGray;
  }
}
function putColorData() {
  ctx.putImageData(myImage, 0, 0);
}

以上就是億速云小編為大家收集整理的怎么在JavaScript中利用Canvas將彩色圖片轉(zhuǎn)換成黑白圖片,如何覺(jué)得億速云網(wǎng)站的內(nèi)容還不錯(cuò),歡迎將億速云網(wǎng)站推薦給身邊好友。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI