国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序?qū)崙?zhàn):智能水印相機(jī)小程序開發(fā)附源碼

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序?qū)崙?zhàn):智能水印相機(jī)小程序開發(fā)附源碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

一款智能水印相機(jī),拍照自動(dòng)添加時(shí)間、地點(diǎn)、經(jīng)緯度等水印文字,可用于工作考勤、學(xué)習(xí)打卡、工作取證等,支持自定義內(nèi)容以及給現(xiàn)有照片添加水印。無需安裝,無需注冊(cè),即開即用。

原理

主要是通過canvas給圖片上添加上時(shí)間水印地點(diǎn)信息。首先通過官方API(chooseLocation)獲取到位置信息,然后利用JS獲取本地時(shí)間,最后繪制到canvas上通過canvasToTempFilePath生成圖片。

獲取位置信息

這個(gè)接口在去年開始就需要用戶手動(dòng)申請(qǐng),在小程序管理頁面申請(qǐng),如果申請(qǐng)按鈕無法點(diǎn)擊,在提交代碼時(shí)會(huì)彈窗申請(qǐng)彈窗,之后就可以申請(qǐng)了。通過后才可以上線小程序。代碼如下:

/**
 * 獲取地址信息
*/
	getLocation: function () {
		wx.getLocation({
			success: res => {
				qqmapsdk.reverseGeocoder({
					location: {
						latitude: res.latitude,
						longitude: res.longitude
					},
					success: res => {
						let address = res.result.address;
						this.setData({
							address
						})
					}
				})
			}
		})
	},

	/**
	 * 手動(dòng)選擇地點(diǎn)
	 */
	chooseLocation: function () {
		wx.chooseLocation({
			success: res => {
				console.log(res)
				this.setData({
					address: res.address
				})
			},
			fail: err => {
				console.log(err)
			}
		})
	}

其中qqmapsdk使用的是騰訊位置服務(wù)的sdk,需要去官方下載并申請(qǐng)key,然后再頁面中加上如下代碼:


var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
var qqmapsdk = new QQMapWX({
	key: '' // 這里填寫你的key
});

獲取時(shí)間信息

時(shí)間信息就很簡單了,這里給大家提供封裝了一下,如下代碼:


export const formatTime = () => {
	const date = new Date();
	const year = date.getFullYear()
	const month = date.getMonth() + 1
	const day = date.getDate()
	const weekDay = ['日', '一', '二', '三', '四', '五', '六'][date.getDay()]
	const hour = date.getHours()
	const minute = date.getMinutes()
	const second = date.getSeconds()
	return {
		date: [year, month, day].map(formatNumber).join('-'),
		time:[hour, minute, second].map(formatNumber).join(':'),
		week: '星期'+weekDay
	}
}

const formatNumber = (n) => {
	const s = n.toString()
	return s[1] ? s : '0' + s
}

繪制圖片

這里說明一下,目前 wx.createCanvasContext接口以及棄用了,所以我們采用Canvas.getContext代替,首先我們需要添加canvas,在wxml頁面中添加如下代碼,一定要設(shè)置好寬高,可以是動(dòng)態(tài)的,但是必須設(shè)定好,不然很容易出現(xiàn)畫面模糊的問題。

<canvas type="2d" id="canvas" style="position: fixed; top: -10000px; left: -10000px; width: {{canvasWidth}}px;height: {{canvasHeight}}px;"></canvas>

然后動(dòng)態(tài)設(shè)置寬高可以根據(jù)相機(jī)或者圖片的寬高自定設(shè)置,然后我們將時(shí)間、位置和圖片等信息一起繪制在canvas上。


/**
	 * 給圖片添加水印
	 */
	addWatermark: function (imageUrl) {
		console.log(imageUrl)
		return new Promise((resolve, reject) => {
			wx.showLoading({
				title: '圖片生成中...',
			})
			const query = wx.createSelectorQuery();
			query.select('#canvas').fields({
				node: true,
				size: true
			}).exec((res) => {
				console.log(res)
				const canvas = res[0].node;
				const ctx = canvas.getContext('2d');

				const dpr = wx.getSystemInfoSync().pixelRatio;
				const {
					canvasWidth,
					canvasHeight
				} = this.data;
				canvas.width = canvasWidth * 1.5
				canvas.height = canvasHeight * 1.5
				ctx.scale(1.5, 1.5)

				// 繪制背景圖片
				const image = canvas.createImage();
				image.onload = () => {
					ctx.drawImage(image, 0, 0, canvasWidth, canvasHeight);

					ctx.font = 'normal 28px null';
					ctx.fillStyle = '#ffffff';
					ctx.textBaseline = 'bottom';

					// 繪制地址
					ctx.fillText(this.data.address, 20, canvasHeight - 20);

					// 繪制時(shí)間
					ctx.fillText(this.data.date + ' ' + this.data.time, 20, canvasHeight - 65);

					// 繪制星期
					ctx.fillText(this.data.week, 20, canvasHeight - 115);


					wx.canvasToTempFilePath({
						canvas,
						success: (res) => {
							wx.hideLoading()
							resolve(res.tempFilePath);
						},
						fail: () => {
							wx.hideLoading()
							reject(new Error('轉(zhuǎn)換為圖片失敗'));
						}
					});
				}
				image.src = imageUrl;
			});
		});
	},


這里直接用Promise封裝了一下,方便調(diào)用。其中iamgeUrl為相機(jī)的照片或者用戶自己上傳的圖片地址。

以上就是大致的流程,具體如何操作,可以看我開源的智能水印相機(jī)的代碼:

Github下載地址

Gitee下載地址文章來源地址http://www.zghlxwxcb.cn/news/detail-483636.html

到了這里,關(guān)于微信小程序?qū)崙?zhàn):智能水印相機(jī)小程序開發(fā)附源碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序開發(fā)之微信小程序交互

    微信小程序開發(fā)之微信小程序交互

    目錄 一、小程序交互 前端: 1、先在登陸界面中編寫代碼 2、在前端中編寫js代碼 后端: ? ? ? ? ? 1、先導(dǎo)入依賴: ? ? ? ? ? 2、定義好配置文件 ? ? ? ? ? 3、編寫好實(shí)體類 ? ? ? ? ? 4、將幫助類進(jìn)行配置 ? ? ? ? ? 5、編寫mapper類 ? ? ? ? ? 6、定義service層以及對(duì)應(yīng)的

    2024年02月09日
    瀏覽(22)
  • 微信小程序 -- 小程序開發(fā)能力與拓展

    微信小程序 -- 小程序開發(fā)能力與拓展

    1. 獲取用戶頭像 當(dāng)小程序需要讓用戶完善個(gè)人資料時(shí),我們可以通過微信提供的頭像、昵稱填寫能力快速完善。如圖: 想使用微信提供的頭像填寫能力,需要兩步: 將 button 組件 open-type 的值設(shè)置為 chooseAvatar 當(dāng)用戶選擇需要使用的頭像之后,可以通過 bindchooseavatar 事件回調(diào)

    2024年04月15日
    瀏覽(29)
  • 【微信小程序開發(fā)零基礎(chǔ)入門】——微信小程序入門

    【微信小程序開發(fā)零基礎(chǔ)入門】——微信小程序入門

    學(xué)習(xí)小程序跟學(xué)習(xí)網(wǎng)頁開發(fā)有什么不同 1.如何創(chuàng)建微信小程序項(xiàng)目 1.1 注冊(cè)、登錄、復(fù)制appId 注冊(cè):在 https://mp.weixin.qq.com/cgi-bin/wx 進(jìn)行注冊(cè)微信小程序開發(fā)賬號(hào) 登錄:在 https://mp.weixin.qq.com 登錄小程序賬號(hào) 復(fù)制appId: 在 \\\"開發(fā)\\\" 的 \\\"開發(fā)管理\\\" 的 \\\"開發(fā)設(shè)置\\\" 的 \\\"開發(fā)者ID\\\"中 1.2 下

    2024年02月03日
    瀏覽(32)
  • 【小程序】零基礎(chǔ)微信小程序開發(fā)+實(shí)戰(zhàn)項(xiàng)目

    【小程序】零基礎(chǔ)微信小程序開發(fā)+實(shí)戰(zhàn)項(xiàng)目

    如何擁有一款屬于你自己的小程序,驚喜就在下面! 目前,小程序行業(yè)已經(jīng)成為互聯(lián)網(wǎng)營銷的熱門黑馬之一,依托于各大流量平臺(tái),小程序行業(yè)具有天然的用戶基礎(chǔ)和得天獨(dú)厚的資源優(yōu)勢,憑借其方便快捷的操作以及簡單通俗的模式,僅短短一年的時(shí)間,就迎來了爆發(fā)性的增

    2024年02月11日
    瀏覽(22)
  • 【微信小程序開發(fā)】微信小程序集成騰訊位置項(xiàng)目配置

    【微信小程序開發(fā)】微信小程序集成騰訊位置項(xiàng)目配置

    騰訊位置服務(wù)官網(wǎng) 當(dāng)然沒賬號(hào)的要先注冊(cè)一個(gè)賬號(hào) 在我的應(yīng)用里創(chuàng)建一個(gè)新的應(yīng)用,印象中需要小程序ID,去微信開發(fā)者工具里面找到自己的小程序ID填入即可 添加 key 中勾選勾選 WebServiceAPI 從官網(wǎng)里下載,我這里下載的是 v1.2 打開微信開發(fā)者工具 在查找小程序ID的地方下滑

    2024年02月02日
    瀏覽(39)
  • 微信小程序開發(fā)實(shí)戰(zhàn)9_2 小程序頁面轉(zhuǎn)發(fā)

    微信小程序開發(fā)實(shí)戰(zhàn)9_2 小程序頁面轉(zhuǎn)發(fā)

    小程序頁面轉(zhuǎn)發(fā)是小程序分享的一個(gè)重要方式,在設(shè)計(jì)小程序應(yīng)用時(shí)就需要考慮那些頁面需要實(shí)現(xiàn)轉(zhuǎn)發(fā)功能,以及頁面的轉(zhuǎn)發(fā)參數(shù)。本節(jié)介紹如何進(jìn)行小程序頁面的分享,并介紹如何獲取小程序卡片的分享票據(jù)。 9.2.1小程序頁面轉(zhuǎn)發(fā) 微信小程序提供了頁面的轉(zhuǎn)發(fā)的功能,用戶

    2024年02月16日
    瀏覽(22)
  • 基于微信小程序的新聞資訊的小程序開發(fā)

    基于微信小程序的新聞資訊的小程序開發(fā)

    隨著我國經(jīng)濟(jì)迅速發(fā)展,人們對(duì)手機(jī)的需求越來越大,各種手機(jī)軟件也都在被廣泛應(yīng)用,但是對(duì)于手機(jī)進(jìn)行數(shù)據(jù)信息管理,對(duì)于手機(jī)的各種軟件也是備受用戶的喜愛,新聞資訊被用戶普遍使用,為方便用戶能夠可以隨時(shí)進(jìn)行新聞資訊的數(shù)據(jù)信息管理,特開發(fā)了基于新聞資訊的

    2024年02月03日
    瀏覽(19)
  • 微信小程序開發(fā)教程:項(xiàng)目一微信小程序入門 課后習(xí)題

    微信小程序開發(fā)教程:項(xiàng)目一微信小程序入門 課后習(xí)題

    《微信小程序開發(fā)教程》主編/黃壽孟 易芳 陶延濤 湖南大學(xué)出版社 目錄 一、單選題 二、多選題 三、判斷題 四、填空題 五、簡答題 1.請(qǐng)簡述微信開發(fā)者工具中調(diào)試器功能。 2.請(qǐng)簡述微信小程序開發(fā)環(huán)境的搭建過程。 六、編程題 1.請(qǐng)創(chuàng)建一個(gè)空白項(xiàng)目,在頁面中輸出Hello W

    2024年02月11日
    瀏覽(88)
  • 微信小程序開發(fā)實(shí)戰(zhàn)10_2 小程序支付請(qǐng)求簽名

    為了保證支付接口使用的安全,微信支付平臺(tái)在支付API中使用了一些用于接口安全調(diào)用的技術(shù)。在調(diào)用時(shí)接口需要使用商戶私鑰進(jìn)行接口調(diào)用的簽名,獲取到微信支付平臺(tái)的應(yīng)答之后也需要對(duì)應(yīng)答進(jìn)行簽名驗(yàn)證。微信的應(yīng)答簽名使用平臺(tái)證書來進(jìn)行簽名驗(yàn)證,因此在調(diào)用支付

    2024年02月11日
    瀏覽(26)
  • 微信小程序開發(fā)15 項(xiàng)目實(shí)戰(zhàn) 基于云開發(fā)開發(fā)一個(gè)在線商城小程序

    在學(xué)完前 4 個(gè)模塊之后,我相信你會(huì)對(duì)微信小程序的開發(fā)有一個(gè)全新的認(rèn)識(shí)。在前面 3 個(gè)模塊中,俊鵬分別從微信小程序內(nèi)在的運(yùn)行原理,小程序工程化開發(fā)以及具體實(shí)踐層面,深度講解了微信小程序開發(fā)所必要的知識(shí)和能力。而第 4 個(gè)模塊里,我?guī)阏J(rèn)識(shí)了微信小程序的云

    2024年02月11日
    瀏覽(99)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包