欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用JavaScript給圖片添加水印的實(shí)現(xiàn)方法封裝

 更新時(shí)間:2024年03月15日 09:52:49   作者:整天敲代碼的小韓  
圖片加水印是一種常見的圖像處理技術(shù),通常用于保護(hù)版權(quán)、防止盜用、增加圖片的識(shí)別度等多種場(chǎng)景,這篇文章主要給大家介紹了關(guān)于使用JavaScript給圖片添加水印的實(shí)現(xiàn)方法封裝,需要的朋友可以參考下

前言

當(dāng)涉及圖片處理時(shí),JavaScript是一種強(qiáng)大的工具。在本篇博客中,我們將學(xué)習(xí)如何使用JavaScript來給圖片添加水印,并將其封裝成一個(gè)函數(shù),以便在需要的時(shí)候重復(fù)使用。

準(zhǔn)備工作:    

在開始之前,確保你已經(jīng)準(zhǔn)備好了以下內(nèi)容:

1.一張待添加水印的圖片。

2.水印圖片。

3.一個(gè)基本的HTML文件和一個(gè)連接到JavaScript文件的script標(biāo)簽。

添加水印效果:

首先,我們需要編寫一個(gè)函數(shù),用于添加水印到圖片上。以下是一個(gè)示例函數(shù):

function addWatermark(imagePath, watermarkPath) {
  var canvas = document.createElement('canvas');
  var context = canvas.getContext('2d');

  // 創(chuàng)建一個(gè)新的Image對(duì)象,用于加載原始圖片
  var image = new Image();
  image.src = imagePath;

  // 在圖片加載完成后執(zhí)行下面的代碼
  image.onload = function() {
    canvas.width = image.width;
    canvas.height = image.height;

    // 將原始圖片繪制到canvas上
    context.drawImage(image, 0, 0);

    // 創(chuàng)建一個(gè)新的Image對(duì)象,用于加載水印圖片
    var watermark = new Image();
    watermark.src = watermarkPath;

    // 在水印圖片加載完成后執(zhí)行下面的代碼
    watermark.onload = function() {
      // 設(shè)置水印的位置和尺寸
      var x = 0;
      var y = 0;
      var width = image.width;
      var height = image.height;

      // 平鋪水印圖片
      context.fillStyle = context.createPattern(watermark, 'repeat');
      context.fillRect(x, y, width, height);

      // 將帶有水印的圖片轉(zhuǎn)換為base64格式
      var watermarkedImage = canvas.toDataURL();

      // 將base64格式的圖片顯示在頁(yè)面上或進(jìn)行其他操作
      // 例如:document.getElementById('result').src = watermarkedImage;
    };
  };
}

這個(gè)函數(shù)使用了HTML5的canvas元素來實(shí)現(xiàn)。它首先創(chuàng)建一個(gè)新的canvas元素,并通過getContext('2d')獲取2D繪圖上下文。然后,它加載原始圖片和水印圖片,并在加載完成后進(jìn)行處理。

在加載原始圖片后,我們將其繪制到canvas上。接著,加載水印圖片并在加載完成后執(zhí)行代碼。在這里,我們使用context.createPattern()方法創(chuàng)建了一個(gè)平鋪的圖案,并使用fillRect()方法將其繪制到canvas上。

最后,我們可以將帶有水印的圖片轉(zhuǎn)換為base64格式,并進(jìn)行進(jìn)一步的展示或處理。

使用封裝的函數(shù) :

要使用上面的函數(shù),你需要在HTML文件中調(diào)用它,并傳遞原始圖片和水印圖片的路徑作為參數(shù)。以下是一個(gè)簡(jiǎn)單的示例:

確保將函數(shù)所在的JavaScript文件引入到HTML文件中,并將原始圖片和水印圖片的路徑替換為實(shí)際的路徑。

<!DOCTYPE html>
<html>
<head>
  <title>添加水印</title>
</head>
<body>
  <script src="watermark.js"></script>
  <script>
    addWatermark('path/to/original/image.jpg', 'path/to/watermark.png');
  </script>
</body>
</html>

附:加文字水印

示例代碼:

  function blobToImg(blob) {
    return new Promise((resolve, reject) => {
      let reader = new FileReader()
      reader.addEventListener('load', () => {
        let img = new Image()
        img.src = reader.result
        img.addEventListener('load', () => resolve(img))
      })
      reader.readAsDataURL(blob)
    })
  }

  function imgToCanvas(img) {
    let canvas = document.createElement('canvas')
    canvas.width = img.width
    canvas.height = img.height
    let ctx = canvas.getContext('2d')
    ctx.drawImage(img, 0, 0)
    return canvas
  }

  function watermark(canvas, text) {
    return new Promise((resolve, reject) => {
      let ctx = canvas.getContext('2d')
      // 設(shè)置填充字號(hào)和字體,樣式
      ctx.font = "24px 宋體"
      ctx.fillStyle = "#FFC82C"
      // 設(shè)置右對(duì)齊
      ctx.textAlign = 'right'
      // 在指定位置繪制文字,這里指定距離右下角20坐標(biāo)的地方
      ctx.fillText(text, canvas.width - 20, canvas.height - 20)
      canvas.toBlob(blob => resolve(blob))
    })
  }

  function imgWatermark(dom, text) {
    let input = document.createElement('input')
    input.setAttribute('type', 'file')
    input.setAttribute('accept', 'image/*')
    input.onchange = async () => {
      let img = await blobToImg(input.files[0])
      let canvas = imgToCanvas(img)
      let blob = await watermark(canvas, text)
      let newImage = await blobToImg(blob)
      dom.appendChild(newImage)
    }
    dom.appendChild(input)
  }

  let dom = document.querySelector('#container')
  imgWatermark(dom, '水印文字')

總結(jié):

在本篇博客中,我們學(xué)習(xí)了如何使用JavaScript給圖片添加水印,并將其封裝成一個(gè)可重復(fù)使用的函數(shù)。通過使用canvas元素和相關(guān)的繪圖API,我們可以實(shí)現(xiàn)圖像處理和增強(qiáng)效果。

到此這篇關(guān)于使用JavaScript給圖片添加水印實(shí)現(xiàn)方法封裝的文章就介紹到這了,更多相關(guān)JS圖片添加水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

參考資料:

相關(guān)文章

最新評(píng)論