vue中怎么根據選擇的名稱 生成印章圖片

項目中需要根據選擇的印章名稱,動態生成印章 ,印章下方顯示當前的日期 代碼如下

<template><div><label for="name">選擇名稱:</label><select id="name" v-model="selectedName"><option value="name1">名稱1</option><option value="name2">名稱2</option><option value="name3">名稱3</option></select><button @click="generateStampImage">生成印章圖片</button><div ref="stampContainer" v-if="stampGenerated"><img :src="stampImage" alt="印章" /></div></div>
</template>export default {data() {return {selectedName: '',stampGenerated: false,stampImage: ''};},
methods: {generateStampImage() {const stampText = this.selectedName;const canvas = document.createElement("canvas");canvas.width = 100; // 縮小印章尺寸canvas.height = 100;const ctx = canvas.getContext("2d");// 繪制圓形邊框ctx.beginPath();ctx.arc(80, 80, 75, 0, 2 * Math.PI, false);ctx.fillStyle = "white";ctx.fill();ctx.lineWidth = 3;ctx.strokeStyle = "red";ctx.stroke();// 繪制五角星this.drawStar(ctx, 80, 80, 5, 30, 15); // 適當調整五角星大小ctx.fillStyle = "red";ctx.fill();// 繪制弧形文本this.drawCircularText(ctx, stampText, 80, 80, 60, -Math.PI / 2, "red"); // 調整文本的起始角度// 繪制日期ctx.font = "14px Arial";ctx.fillStyle = "red";ctx.textAlign = "center";ctx.fillText(this.currentDate, 80, 120); // 日期顯示在五角星下方const stampImage = canvas.toDataURL("image/png");this.stampGenerated = true;this.stampImage = stampImage;},drawStar(ctx, cx, cy, spikes, outerRadius, innerRadius) {let rot = (Math.PI / 2) * 3;let x = cx;let y = cy;const step = Math.PI / spikes;ctx.beginPath();ctx.moveTo(cx, cy - outerRadius);for (let i = 0; i < spikes; i++) {x = cx + Math.cos(rot) * outerRadius;y = cy + Math.sin(rot) * outerRadius;ctx.lineTo(x, y);rot += step;x = cx + Math.cos(rot) * innerRadius;y = cy + Math.sin(rot) * innerRadius;ctx.lineTo(x, y);rot += step;}ctx.lineTo(cx, cy - outerRadius);ctx.closePath();},drawCircularText(ctx, text, x, y, radius, color) {ctx.fillStyle = color;ctx.font = '16px Arial';ctx.textBaseline = 'middle';let startAngle = -Math.PI; // 開始于水平左側let totalAngle = 0; // 計算總角度// 計算文本占據的總角度for (let i = 0; i < text.length; i++) {totalAngle += ctx.measureText(text[i]).width / radius;}// 調整開始角度,使文本居中startAngle += (Math.PI - totalAngle) / 2;for (let i = 0; i < text.length; i++) {const char = text[i];const charWidth = ctx.measureText(char).width;const angle = startAngle + charWidth / (2 * radius);ctx.save();ctx.translate(x + Math.cos(angle) * radius, y + Math.sin(angle) * radius);ctx.rotate(angle + Math.PI / 2);ctx.fillText(char, -charWidth / 2, 0);ctx.restore();startAngle += charWidth / radius;}},
}}

使用的地方調用: this.generateStampImage();即可
生成的效果如下
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163169.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163169.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163169.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

技術面時,一定要掌握這3個關鍵點

前言 現在有這么多優秀的測試工程師&#xff0c;大家都知道技術面試是不可避免的一個環節&#xff0c;一般技術面試官都會通過自己的方式去考察你的技術功底與基礎理論知識。 如果你參加過一些大廠面試&#xff0c;肯定會遇到一些這樣的問題&#xff1a; 1、看你項目都用到了…

機器學習/sklearn 筆記:K-means,kmeans++,MiniBatchKMeans

1 K-means介紹 1.0 方法介紹 KMeans算法通過嘗試將樣本分成n個方差相等的組來聚類&#xff0c;該算法要求指定群集的數量。它適用于大量樣本&#xff0c;并已在許多不同領域的廣泛應用領域中使用。KMeans算法將一組樣本分成不相交的簇&#xff0c;每個簇由簇中樣本的平均值描…

為什么要寫測試用例,測試用例寫給誰看?

&#x1f4e2;專注于分享軟件測試干貨內容&#xff0c;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01;&#x1f4e2;交流討論&#xff1a;歡迎加入我們一起學習&#xff01;&#x1f4e2;資源分享&#xff1a;耗時200小時精選的「軟件測試」資…

mysql查詢統計最近12個月的數據

項目場景&#xff1a; mysql查詢統計最近12個月的數據&#xff0c;按每個月縱向展示&#xff0c;效果圖 sql語句 注意&#xff1a;count( v.uuid ) 這里的是被統計那張表的id SELECT m.month,count( v.uuid ) AS total FROM (SELECT DATE_FORMAT(( CURDATE()), %Y-%m ) AS mon…

Leetcode—6.N字形變換【中等】

2023每日刷題&#xff08;三十七&#xff09; Leetcode—6.N字形變換 算法思想 參考k神的題解 實現代碼 class Solution { public:string convert(string s, int numRows) {if(numRows < 2) {return s;}vector<string> rows(numRows);int flag -1;int i 0;for(…

JMeter集結點的使用場景以及如何使用?

JMeter是一個開源的負載測試工具&#xff0c;它被廣泛用于測試應用程序、Web服務和網絡協議等的性能。在JMeter中&#xff0c;集結點&#xff08;JMeter Cluster&#xff09;是一種分布式測試環境&#xff0c;它允許多個JMeter實例同時工作來模擬高并發負載。 使用集結點的場景…

聚水潭連接API,集成無代碼開發,優化電商平臺運營

聚水潭連接API&#xff0c;實現電商平臺的高效運營 聚水潭作為一款SaaS ERP解決方案&#xff0c;通過其出色的產品和服務&#xff0c;迅速在市場上占據了一席之地。而其無代碼開發的特點&#xff0c;為電商系統和客服系統的連接與集成提供了便利。聚水潭開放平臺的優勢在于&am…

常見的電商模式

市面上5種常見的電商模式&#xff1a; B2B模式 B2B&#xff08;business to business&#xff09;,是指商家與商家建立的商業關系。如&#xff1a;阿里巴巴 B2C模式 B2C&#xff08;business to consumer&#xff09;,商對客模式&#xff0c;商業零售。直接面向消費者銷售產品…

2024年荊州中級工程師職稱申報時間是什么時候?

甘建二十年耕耘職稱。 2024年荊州中級工程師職稱開始準備了&#xff0c;關于荊門中級職稱具體申報時間&#xff0c;甘建二告訴你。 ?2024年荊州中級工程師職稱申報時間&#xff1a; 1.水平能力測試報名3月份 2.水平能力測試考試4月份3.職稱申報9月份&#xff0c;采取的是網上申…

ElementPlusError: [ElOnlyChild] no valid child node found

突然發現頁面報了一堆黃色的錯誤提示 查了下原來是這里導致的&#xff0c;只需要把v-if 挪到popover那層即可 解決

服務器安全防護導致使用多款行業頂尖軟件搭配使用,還是單獨一款解決呢?

如今&#xff0c;在全球各地&#xff0c;數以千計的公司、組織和個人都依賴于服務器來存儲和訪問重要數據&#xff0c;托管應用程序&#xff0c;以及提供服務。但是&#xff0c;這些服務器不斷面臨著來自網絡黑客的威脅&#xff0c;因此服務器的安全成為了當務之急。 在這種情…

win10底部任務欄無響應?試試這些方法!

win10的任務欄是一個關鍵的用戶界面元素&#xff0c;允許您輕松訪問應用程序和系統功能。然而&#xff0c;有時您可能會遇到win10底部任務欄無響應的問題&#xff0c;這會妨礙您的工作流程。本篇文章將介紹解決win 10底部任務欄無響應的問題的三種方法&#xff0c;每種方法都會…

git操作分支命令

# 列出所有本地分支 $ git branch# 列出所有遠程分支 $ git branch -r# 列出所有本地分支和遠程分支 $ git branch -a# 新建一個分支&#xff0c;但依然停留在當前分支 $ git branch [branch-name]# 新建一個分支&#xff0c;并切換到該分支 $ git checkout -b [branch]# 新建一…

RocketMQ保姆級教程

RocketMQ是阿里巴巴旗下一款開源的MQ框架&#xff0c;經歷過雙十一考驗、Java編程語言實現&#xff0c;有非常好完整生態系統。RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件&#xff0c;支持事務消息、順序消息、批量消息、定時消息、消息回溯等&#xff0c;總之…

為Oracle鏈接服務器使用分布式事務

1 現象 在SQL Server中創建指向Oracle的鏈接服務器&#xff0c;SQL語句在事務中向鏈接服務器插入數據。返回鏈接服務器無法啟動分布式事務的報錯。 2 解決 在Windows平臺下&#xff0c;SQL Server依賴分布式事務協調器&#xff08;MSDTC&#xff09;來使用分布式事務&#xff0…

關于APP備案的通知以及APP備案的常見問題

前言 眾所周知今年8月份&#xff0c;工信部出臺了《工業和信息化部關于開展移動互聯網應用程序備案工作的通知》&#xff0c;APP開發者的影晌是顯而易見的。開發者需要按照要求提交相關材料進行備案&#xff0c;這無疑增加了開發者的時間和精力成本。雖然備案制度會增加開發者…

深度學習之基于Tensorflow卷積神經網絡鳥類目標識別檢測系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 基于Tensorflow的卷積神經網絡&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;在鳥類目標識…

MAX/MSP SDK學習06:內存管理

提供兩種內存分配方式&#xff1a;①簡單指針&#xff0c;②句柄&#xff08;二級指針&#xff09;&#xff1b;官方文檔建議使用前者。 // 簡單指針 char *ptr; ptr sysmem_newptr(2000); post("I have a pointer %lx and it is %ld bytes in size",ptr, sysmem_p…

opencv-分水嶺算法分割

原理 任何一副灰度圖像都可以被看成拓撲平面&#xff0c;灰度值高的區域可以被看成是山峰&#xff0c;灰度值低的區域可以被看成是山谷。我們向每一個山谷中灌不同顏色的水。隨著水的位的升高&#xff0c;不同山谷的水就會相遇匯合&#xff0c;為了防止不同山谷的水匯合&#x…

ios(swiftui) 畫中畫

一、環境 要實現畫中畫 ios系統必須是 iOS14 本文開發環境 xcode14.2 二、權限配置 在項目導航器中單擊項目&#xff0c;然后單擊Signing & Capabilities。單擊 Capabilit搜索Background Modes&#xff0c;然后雙擊將其添加為功能。在新添加的Background Modes部分&a…