使用JavaScript給圖片添加水印的實現(xiàn)方法封裝
前言
當涉及圖片處理時,JavaScript是一種強大的工具。在本篇博客中,我們將學習如何使用JavaScript來給圖片添加水印,并將其封裝成一個函數(shù),以便在需要的時候重復使用。
準備工作:
在開始之前,確保你已經(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() {
// 設置水印的位置和尺寸
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);
// 將帶有水印的圖片轉換為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上。
最后,我們可以將帶有水印的圖片轉換為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')
// 設置填充字號和字體,樣式
ctx.font = "24px 宋體"
ctx.fillStyle = "#FFC82C"
// 設置右對齊
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, '水印文字')
總結:
在本篇博客中,我們學習了如何使用JavaScript給圖片添加水印,并將其封裝成一個可重復使用的函數(shù)。通過使用canvas元素和相關的繪圖API,我們可以實現(xiàn)圖像處理和增強效果。
到此這篇關于使用JavaScript給圖片添加水印實現(xiàn)方法封裝的文章就介紹到這了,更多相關JS圖片添加水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
參考資料:
相關文章
php main 與 iframe 相互通訊類(js+php同域/跨域)
這篇文章主要介紹了php main 與 iframe 相互通訊類(js+php同域/跨域),需要的朋友可以參考下2017-09-09
js中的eval()函數(shù)把含有轉義字符的字符串轉換成Object對象的方法
下面小編就為大家?guī)硪黄猨s中的eval()函數(shù)把含有轉義字符的字符串轉換成Object對象的方法。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12

