最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實現(xiàn)彩色圖片轉(zhuǎn)換為黑白圖片的3種方法

 更新時間:2024年09月10日 10:46:46   作者:代碼里的小貓咪  
本文主要介紹了JS實現(xiàn)彩色圖片轉(zhuǎn)換為黑白圖片的3種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 使用 Canvas

研究 canvas 時發(fā)現(xiàn)一個有趣的現(xiàn)象——將彩色圖片巧妙地轉(zhuǎn)換為黑白圖片。以下是實現(xiàn)這一功能的簡潔代碼示例:

<div style="display: flex">
  <img src="./panda.jpeg" />
  <button onclick="change()">轉(zhuǎn)換</button>
  <canvas width="358" height="362"></canvas>
</div>

大致步驟為:

1. 把 img 元素畫到 canvas 上

2. 獲取畫布某個區(qū)域的圖像信息,返回圖片信息對象

包括 data-類型化數(shù)組(紅,綠,藍,alpha),圖片的寬高等數(shù)據(jù)

3. 重新設(shè)置圖像數(shù)據(jù)到畫布

<script>
  function change() {
    const img = document.querySelector("img");
    const cvs = document.querySelector("canvas");
    // 獲取繪圖表面提供 2D 渲染上下文
    const ctx = cvs.getContext("2d");
    // 把img元素畫到canvas畫布上
    ctx.drawImage(img, 0, 0);

    // 獲取畫布某個區(qū)域的圖像信息(整個圖片區(qū)域)
    const imageData = ctx.getImageData(0, 0, img.width, img.height);
    // imageData:圖片信息對象
    for (let i = 0; i < imageData.data.length; i += 4) {
      // 將灰度值重新賦值給rgba
      const r = imageData.data[i];
      const g = imageData.data[i + 1];
      const b = imageData.data[i + 2];
      const avg = (r + g + b) / 3;
      imageData.data[i] =
      imageData.data[i + 1] =
      imageData.data[i + 2] =
      avg;
    }
    // 重新設(shè)置圖像數(shù)據(jù)到畫布
    ctx.putImageData(imageData, 0, 0);
  }
  </script>

實現(xiàn)的效果如下:

注意:需要將 canvas 的 width 和 height 設(shè)置成圖片的真實大小,否則可能出現(xiàn)轉(zhuǎn)換后圖片尺寸不一致。

黑白圖片的原理

1. 畫布中的一個圖像是由多個像素點組成,每個像素點有四個數(shù)據(jù):紅、綠、藍、alpha。

2. 將圖像變成黑白,只需要將圖像的每一個像素點設(shè)置成當(dāng)前紅、綠、藍值的平均數(shù)即可。

2. 使用 CSS 濾鏡

如果只是希望在頁面上顯示灰度圖片,而不需要在 JavaScript 中處理圖片數(shù)據(jù),那么可以直接使用 CSS 的 filter 屬性來實現(xiàn)。代碼如下:

<div>
  <img src="./panda.jpeg" />
  <button onclick="change()">點擊</button>
</div>
<script>
  const change = () => {
    const img = document.querySelector('img');
    img.style.filter = 'grayscale(100%)'
  }
</script>

這種方法不會改變圖片的原始數(shù)據(jù),只是改變了其在頁面上的顯示方式。

效果如下:

3. 使用第三方庫

比如 Three.js 或 Pixi.js,這些庫提供了自己的方法來處理圖像數(shù)據(jù),包括灰度化。如果需要更加精準的轉(zhuǎn)換操作,可以參考其官方文檔。

到此這篇關(guān)于JS實現(xiàn)彩色圖片轉(zhuǎn)換為黑白圖片的3種方法的文章就介紹到這了,更多相關(guān)JS 彩色圖片轉(zhuǎn)換黑白圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

神农架林区| 泰州市| 曲水县| 内丘县| 沙河市| 吴堡县| 同德县| 萝北县| 晋中市| 丽水市| 定结县| 三门峡市| 清丰县| 耿马| 和硕县| 麟游县| 巴东县| 车险| 隆昌县| 枣庄市| 上杭县| 阳城县| 峨山| 定兴县| 肇州县| 丽水市| 全南县| 盐边县| 公安县| 水富县| 庆阳市| 河西区| 洞口县| 奉节县| 竹北市| 固原市| 东莞市| 连南| 波密县| 贡嘎县| 禹州市|