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

canvas 自定義畫布,在畫布上增加(邊框 圖片 文字 )

這篇具有很好參考價值的文章主要介紹了canvas 自定義畫布,在畫布上增加(邊框 圖片 文字 )。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

先說下我的功能需求:
通過畫布,自定義一個區(qū)域大小,在這個區(qū)域內(nèi):添加背景圖片、圖中圖疊加、畫內(nèi)外邊框、設(shè)置文字(文字的字體和大小顏色)

效果圖
怎么在canvas 畫布上輸入文字,前端,vue
背景圖片就是鳴人和雛田,右下角的屬于圖中圖疊加效果,左下和右下都是分別畫的兩個區(qū)域框

不需要用到上傳圖片功能的,這一步可以略過,直接看下面 canvasdiv() 方法
1.右下角的小圖,我做的是上傳圖片,上面有個附圖上傳的按鈕,這個用的是element-ui,代碼我貼下面了,也可以不選擇上傳,自己從本地獲取一張圖片也可以

<el-form-item label="附圖上傳" prop="dh">
     <div>
          <el-upload class="upload-demo" action="" :on-preview="handlePreview" :on-remove="handleRemove"
              :before-remove="beforeRemove" :on-change="uploadTU" :auto-upload="false" :limit="1"
              list-type="picture" :on-exceed="handleExceed" :file-list="fileList">
              <el-button size="small" type="primary">點擊上傳附圖</el-button>
              <div slot="tip" class="el-upload__tip">只能上傳jpg/png文件,且不超過500kb</div>
          </el-upload>
      </div>
</el-form-item>
//附圖上傳調(diào)用的方法,這里主要是獲取了圖片的地址,
//這里這個 this.futuimage 會在做附圖的時候用到,所以我這里要保存一下這個圖片地址
uploadTU(file, filelist) {
   this.futuimage = file.url
},

畫布上圖、自定義文字、畫線

1.先定義一個canvas容器

<div id="div">
    <canvas id="canvas"></canvas>
</div>

2.這個方法自己寫個點擊事件觸發(fā),我是用按鈕觸發(fā)的,按鈕代碼我就不寫了文章來源地址http://www.zghlxwxcb.cn/news/detail-752033.html

//圖片生成pdn的方法
       canvasdiv(dataUrl) {
            var canvas = document.getElementById("canvas");
            canvas.width = 1545;
            canvas.height = 855;
            var ctx = canvas.getContext("2d");

			//這里就是背景圖,我獲取的是本地圖片
            var image = new Image();
            //這里可以放png圖片,也可以放圖片的base64
            image.src = './img/beijingtu.png'; 

			//圖例圖片
            var tuli = new Image();
            tuli.src = './img/xiao.png';
			
			//附圖圖片
            var futu = new Image();
            futu.src = this.futuimage;	//這個我放的是圖片的base64,主要給大家說明一下可以放這種類型數(shù)據(jù)
			
			//從這一步開始,就開始畫布了,在畫布里設(shè)置圖片呀 文字呀 邊框呀
            image.onload = function () {
                var imgwidth = 1400;	//背景圖寬度
                var imgheight = 750;	//背景圖高度
                var left = (canvas.width - imgwidth) / 2;
                var top = (canvas.height - imgheight) / 2;
                
				//第一個參數(shù)image就是我讀取的本地png圖片,這里我試過放base64 也可以
				//第二個參數(shù)left 就是 x坐標,第三個參數(shù)top就是 y坐標 ,坐標軸懂吧 x和y
				//第四個和第五個參數(shù)就是背景圖的寬和高,單位是像素px
				//多說一句第一個參數(shù) image 看你自己需求放什么,但是我發(fā)現(xiàn)base64圖片不能自適應(yīng)
                ctx.drawImage(image, left, top, imgwidth, imgheight);	//背景圖上圖到畫布
                //外框
                ctx.moveTo(left - 20, top - 20); //將畫筆移動到坐標 x和y
                ctx.lineTo(left + imgwidth + 20, top - 20); //從畫筆位置繪制直線到坐標 x和y
                ctx.lineTo(left + imgwidth + 20, top + imgheight + 20); //從當(dāng)前位置繪制直線到
                ctx.lineTo(left - 20, top + imgheight + 20); //.從當(dāng)前位置...
                ctx.closePath(); //閉合線條
                ctx.lineWidth = 3; //線寬
                ctx.strokeStyle = 'black'; //描邊顏色
                ctx.stroke(); //渲染直線(描邊)

                //最內(nèi)的框
                ctx.moveTo(left, top); //將畫筆移動到坐標
                ctx.lineTo(left + imgwidth, top); //從畫筆位置繪制直線到坐標
                ctx.lineTo(left + imgwidth, top + imgheight); //從當(dāng)前位置繪制直線到
                ctx.lineTo(left, top + imgheight); // 從當(dāng)前位置
                ctx.closePath(); //閉合線條
                ctx.lineWidth = 1; //線寬
                ctx.strokeStyle = 'black'; //描邊顏色
                ctx.stroke(); //渲染直線(描邊)
				
				//看一下效果圖左下角有個圖例,背景色是白色,主要是填充區(qū)域顏色需要加這一行代碼
                ctx.beginPath(); //開啟路徑繪制,不加它無法填充區(qū)域顏色,
                ctx.moveTo(left, imgheight / 4 * 3 + top); //將畫筆移動到坐標
                ctx.lineTo(left + this.tuli_width, imgheight / 4 * 3 + top); //從畫筆位置繪制直線到坐標
                ctx.lineTo(left + this.tuli_width, imgheight + top); //從當(dāng)前位置繪制直線到
                ctx.lineTo(left, imgheight + top); //.從當(dāng)前位置
                ctx.closePath(); //閉合線條
                ctx.fillStyle = 'white';
                ctx.fill(); //設(shè)置封閉圖形填充
                ctx.lineWidth = 1; //線寬
                ctx.strokeStyle = 'black'; //描邊顏色
                ctx.stroke(); //渲染直線(描邊)

                //附圖
                ctx.beginPath(); //開啟路徑繪制,不加它無法填充區(qū)域顏色
                ctx.moveTo(imgwidth - 300 + left, imgheight / 4 * 3 + top); //將畫筆移動到坐標
                ctx.lineTo(left + imgwidth, imgheight / 4 * 3 + top); //從畫筆位置繪制直線到坐標
                ctx.lineTo(left + imgwidth, imgheight + top); //從當(dāng)前位置繪制直線到
                ctx.lineTo(imgwidth - 300 + left, imgheight + top); //.從當(dāng)前位置
                ctx.lineWidth = 1; //線寬
                ctx.strokeStyle = 'black'; //描邊顏色
                ctx.fillStyle = 'white';
                ctx.fill(); //設(shè)置封閉圖形填充
                ctx.stroke(); //渲染直線(描邊)
                ctx.closePath(); //閉合線條
                ctx.drawImage(futu, imgwidth - 300 + left, imgheight / 4 * 3 + top + 20, 300, imgheight / 4 - 20); //添加附圖圖片

                //附圖倆字下面的橫線
                ctx.moveTo(imgwidth - 300 + left, imgheight / 4 * 3 + top + 25); //將畫筆移動到坐標
                ctx.lineTo(left + imgwidth, imgheight / 4 * 3 + top + 25);
                ctx.lineWidth = 1; //線寬
                ctx.strokeStyle = 'black'; //描邊顏色
                ctx.stroke(); //渲染直線(描邊)

                // 繪制文字(文本內(nèi)容,x坐標,y坐標)
                ctx.font = "13px serif";    //文字大小
                ctx.fillStyle = "black";    //文字顏色
                ctx.textAlign = "center";   //文字居中

                ctx.font = "23px 宋簡體"
                ctx.fillText("標題", canvas.width / 2, canvas.height - 835);

                ctx.font = "15px 黑體"
				ctx.fillText("圖例", left + 75, imgheight / 4 * 3 + top + 17);
                ctx.fillText("小圖區(qū)域", imgwidth - 150 + left, imgheight / 4 * 3 + top + 17);

                ctx.font = "13px 黑體"
                ctx.fillText("自定義文字", left - 10, canvas.height - 835);
                ctx.fillText("1:50000", canvas.width / 2, canvas.height - 12);
                ctx.fillText(that.getCurrentTime(), left + imgwidth - 20, canvas.height - 12);
                ctx.fillText("XXX", left - 10, canvas.height - 12);


                //展示生成后的圖片效果--第二張圖
                var base64 = canvas.toDataURL();
                document.getElementById("base64Img").src = base64;

                const download = document.getElementById("download");
                var ba64 = canvas.toDataURL("image/png");

                // 點擊圖片下載
                // canvas.onclick = function () {
                //     //download.click();
                //     var input1 = document.getElementById("upload");

                //     if (typeof FileReader === 'undefined') {
                //         alert("抱歉,你的瀏覽器不支持 FileReader");
                //         input1.setAttribute('disabled', 'disabled');
                //     } else {
                //         // console.log(typeof FileReader);
                //         input1.addEventListener('change', that.readFile(), false);
                //         /*input1.addEventListener('change',function (e){
                //       // console.log(e.target.files[0]);
                //       console.log(this.files[0]);
                //       },false); */
                //     }
                // };
            }
        },

到了這里,關(guān)于canvas 自定義畫布,在畫布上增加(邊框 圖片 文字 )的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 微信小程序canvas畫布轉(zhuǎn)圖片轉(zhuǎn)pdf文件

    目錄 關(guān)鍵步驟介紹 步驟一:將canvas頁面保存為圖片 步驟二:上傳圖片,獲取唯一的fileID

    2024年01月16日
    瀏覽(23)
  • 微信小程序canvas畫布繪制base64圖片并保存圖片到相冊中

    WXML部分: 樣式可以根據(jù)自己需求自行調(diào)整 canvas繪制成圖片部分: 這就將圖片繪制出來了。 首先獲取用戶相冊權(quán)限。 保存功能:

    2024年02月13日
    瀏覽(35)
  • 微信小程序使用canvas畫布生成二維碼海報分享圖片(完整示例代碼)

    微信小程序使用canvas畫布生成二維碼海報分享圖片(完整示例代碼)

    canvas.js //獲取應(yīng)用實例 const app = getApp() Page({ /** 頁面的初始數(shù)據(jù) */ data: { // canvas _width: 0, //手機屏寬 _heigth: 0,//手機屏高 swiperHeight: 300,//主圖圖片高度 canvasType: false,//canvas是否顯示 loadImagePath: ‘’,//下載的圖片 imageUrl: ‘https://cos.myfaka.com/car/service/1.jpg’, //主圖網(wǎng)絡(luò)路徑 codeU

    2024年04月12日
    瀏覽(103)
  • C# 圖片轉(zhuǎn)PDF,PDF增加水印文字

    好久沒寫博客了,今天給大家分享一個圖片轉(zhuǎn)PDF的相關(guān)操作,也算是一次總結(jié)吧。 首先需要準備動態(tài)庫itextsharp.dll,這個dll去網(wǎng)上下載,都可以下載到,C#對PDF的操作都是基于這個類庫來實現(xiàn)的。話不多說,直接上代碼。

    2024年02月09日
    瀏覽(30)
  • uniapp中使用canvas,在微信小程序中實現(xiàn)圖片縮放移動涂鴉文字

    uniapp中使用canvas,在微信小程序中實現(xiàn)圖片縮放移動涂鴉文字

    最近需要一個功能,在微信中編輯圖片,實現(xiàn)對圖片的涂鴉、加文字、縮放、移動,以下基本能實現(xiàn)該功能。 uniapp中使用畫布,實現(xiàn)圖片的編輯-批量批改圖片 1.初始化畫布圖片,圖片是網(wǎng)絡(luò)圖片,非本地圖片,所以需要先獲取圖片信息,直接使用uni.getImageInfo(如果是本地圖

    2024年04月14日
    瀏覽(123)
  • vue3中,使用html2canvas截圖包含視頻、圖片、文字的區(qū)域

    vue3中,使用html2canvas截圖包含視頻、圖片、文字的區(qū)域

    需求:將頁面中指定區(qū)域進行截圖,區(qū)域中包含了圖片、文字、視頻。 第一步,先安裝 第二步,在頁面引入: 第三步,頁面使用: 1)html部分: 2)js部分: 剛開始我截出的圖只有文字,插圖和視頻部分是空白的,并沒有將頁面的插圖和視頻截進去,最終發(fā)現(xiàn)是 跨域 導(dǎo)致的

    2024年02月06日
    瀏覽(26)
  • React實現(xiàn)文本框輸入文字內(nèi)容動態(tài)給圖片添加文字信息(多個)并生成新的圖片

    React實現(xiàn)文本框輸入文字內(nèi)容動態(tài)給圖片添加文字信息(多個)并生成新的圖片

    收到這個需求的時候,我的內(nèi)心是崩潰的,腦子里已經(jīng)跑過一萬匹草泥馬,內(nèi)心想這種事為啥不交給ps去做,哪怕是手機里圖片編輯也可以做到吧,專業(yè)的事交給專業(yè)的工具去干不就好了,何必出這種XX需求。后來想想就釋然了,反正拿錢干活,干啥不是干,只要給錢,再XX的

    2024年02月06日
    瀏覽(27)
  • 畫布canvas

    畫布canvas

    canvas是HTML5重要元素,不需要外部插件支持,為我們提供了強大的圖形處理功能,常用于移動端web的開發(fā)。canvas是一個標簽在body中直接書寫即可,且在css內(nèi)部樣式中不能修改畫布的寬度,高度。 1.獲取畫布:var canvas=document.querySelector(\\\'canvas\\\') 2.獲取畫筆 :var ctx=canvas.getContext

    2023年04月11日
    瀏覽(35)
  • HTML5 Canvas(畫布)

    HTML5 Canvas(畫布)

    canvas標簽定義圖形,比如圖表和其他圖像,你必須用腳本來繪制圖形。 在畫布上( Canvas )畫一個共紅色矩形,漸變矩形,彩色矩形,和一些彩色文字。 HTML5canvas元素用于圖形繪制,通過腳本(通常是 Javascript)來完成。 canvas標簽是圖形容器,必須使用腳來繪制圖形。 你可以

    2024年02月14日
    瀏覽(31)
  • 【小程序】Canvas 畫布分享海報

    【小程序】Canvas 畫布分享海報

    成品效果圖 可以通過切換下面圖片形成不同的海報背景分享圖

    2024年02月14日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包