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

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

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

前言

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

準備工作:    

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

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

2.水印圖片。

3.一個基本的HTML文件和一個連接到JavaScript文件的script標簽。

添加水印效果:

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

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

  // 創(chuàng)建一個新的Image對象,用于加載原始圖片
  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)建一個新的Image對象,用于加載水印圖片
    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格式的圖片顯示在頁面上或進行其他操作
      // 例如:document.getElementById('result').src = watermarkedImage;
    };
  };
}

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

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

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

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

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

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

<!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è)置填充字號和字體,樣式
      ctx.font = "24px 宋體"
      ctx.fillStyle = "#FFC82C"
      // 設(shè)置右對齊
      ctx.textAlign = 'right'
      // 在指定位置繪制文字,這里指定距離右下角20坐標的地方
      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給圖片添加水印,并將其封裝成一個可重復(fù)使用的函數(shù)。通過使用canvas元素和相關(guān)的繪圖API,我們可以實現(xiàn)圖像處理和增強效果。

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

參考資料:

相關(guān)文章

  • JS實現(xiàn)數(shù)組扁平化的8種方式總結(jié)

    JS實現(xiàn)數(shù)組扁平化的8種方式總結(jié)

    數(shù)組扁平化指的是將一個多層嵌套的數(shù)組,處理成只有一層的數(shù)組,本文為大家整理了8個常用的JS實現(xiàn)數(shù)組扁平化的方法,希望對大家有所幫助
    2023-08-08
  • jquery 時間戳轉(zhuǎn)日期過程詳解

    jquery 時間戳轉(zhuǎn)日期過程詳解

    這篇文章主要介紹了jquery 時間戳轉(zhuǎn)日期過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • js格式化貨幣數(shù)據(jù)實現(xiàn)代碼

    js格式化貨幣數(shù)據(jù)實現(xiàn)代碼

    貨幣數(shù)據(jù)想要一某種形式在頁面中顯示的話,首先是必須要格式化的,下面為大家介紹下具體的格式化代碼,感興趣的朋友可以參考下
    2013-09-09
  • js實現(xiàn)文字滾動效果

    js實現(xiàn)文字滾動效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)文字滾動效果,類似于新聞板塊中的公示公告,,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 簡單實現(xiàn)JavaScript彈幕效果

    簡單實現(xiàn)JavaScript彈幕效果

    這篇文章主要幫助大家簡單實現(xiàn)JavaScript彈幕效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • ajax前臺后臺跨域請求處理方式

    ajax前臺后臺跨域請求處理方式

    本篇文章通過前臺跨域請求處理以及后臺跨域的數(shù)據(jù)處理方式介紹,詳細分析了ajax跨域的問題,對此有需要的朋友學(xué)習(xí)下。
    2018-02-02
  • 可以將word轉(zhuǎn)成html的js代碼

    可以將word轉(zhuǎn)成html的js代碼

    這段很短的代碼,可以將word轉(zhuǎn)出html格式的代碼,當然word自己也帶的,另存為里面就有的,喜歡的朋友可以試試。
    2010-04-04
  • layui form表單提交后實現(xiàn)自動刷新

    layui form表單提交后實現(xiàn)自動刷新

    今天小編就為大家分享一篇layui form表單提交后實現(xiàn)自動刷新,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php main 與 iframe 相互通訊類(js+php同域/跨域)

    php main 與 iframe 相互通訊類(js+php同域/跨域)

    這篇文章主要介紹了php main 與 iframe 相互通訊類(js+php同域/跨域),需要的朋友可以參考下
    2017-09-09
  • js中的eval()函數(shù)把含有轉(zhuǎn)義字符的字符串轉(zhuǎn)換成Object對象的方法

    js中的eval()函數(shù)把含有轉(zhuǎn)義字符的字符串轉(zhuǎn)換成Object對象的方法

    下面小編就為大家?guī)硪黄猨s中的eval()函數(shù)把含有轉(zhuǎn)義字符的字符串轉(zhuǎn)換成Object對象的方法。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12

最新評論