html5-canvas 相关问题

Canvas是一个HTML元素,允许2D和3D中的2D形状,3D形状,位图图像和动画的动态,可编写脚本的渲染。

描边画布元素,就好像它们是一个元素一样

我有一个带有多个圆圈的画布,想将它们当作 1 来描画。 正如你所看到的,这一切都是他们自己绘制的 上下文.beginPath(); context.fillStyle = "#F9F8F3"; 继续...

回答 1 投票 0

如何在已有图像的画布上添加水印?

我有一个相机视频源和一个画布。 当用户单击“提交”时,画布会获取提要的图像 我有一个相机视频源和一个画布。 当用户单击“提交”时,画布会获取提要的图像 <video id="video" width="300" height="200" autoplay></video> </section> <section class="btn"> <button id="btnClick">Submit</button><br> </section> <section> <canvas id="canvas" width="300" height="300"> </section> 用户点击提交后,可以点击分享上传图片。 <input type="button" onclick="uploadEx()" value="Share" /> <form method="post" accept-charset="utf-8" name="form1"> <input name="hidden_data" id='hidden_data' type="hidden"/> </form> 我希望能够在用户通过单击共享按钮提交第一个快照之前在图像顶部覆盖另一个 png。 上传图片的JS: function uploadEx() { var canvas = document.getElementById("canvas"); var dataURL = canvas.toDataURL("image/png"); document.getElementById('hidden_data').value = dataURL; var fd = new FormData(document.forms["form1"]); var xhr = new XMLHttpRequest(); xhr.open('POST', 'uploadscript.php', true); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percentComplete = (e.loaded / e.total) * 100; console.log(percentComplete + '% uploaded'); alert('Image uploaded'); } }; xhr.onload = function() { }; xhr.send(fd); }; 上传时如何在顶部叠加第二张图片(如水印)? 这是使用临时画布的一种方法: 创建临时内存画布:document.createElement('canvas') 将主画布绘制到临时画布上:tempContext.drawImage(mainCanvas,0,0) 添加一些重叠的文本(或其他内容)作为水印:tempContext.fillText('Mine!',0,0) 获取临时画布的dataURL:tempCanvas.toDataURL() 示例代码和演示: var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var cw = canvas.width; var ch = canvas.height; var img = new Image(); img.crossOrigin = 'anonymous'; img.onload = start; img.src = "https://i.sstatic.net/ithV0ACj.png"; function start() { const canvasWidth = Math.min(img.width, 450); const canvasHeight = Math.min(img.height, 450); canvas.width = canvasWidth canvas.height = canvasHeight; ctx.drawImage(img, 0, 0, canvasWidth, canvasHeight); var dataURL = watermarkedDataURL(canvas, "It's Mine!"); } function watermarkedDataURL(canvas, text) { var tempCanvas = document.createElement('canvas'); var tempCtx = tempCanvas.getContext('2d'); var cw, ch; cw = tempCanvas.width = canvas.width; ch = tempCanvas.height = canvas.height; tempCtx.drawImage(canvas, 0, 0); tempCtx.font = "24px verdana"; var textWidth = tempCtx.measureText(text).width; tempCtx.globalAlpha = .50; tempCtx.fillStyle = 'white' tempCtx.fillText(text, cw - textWidth - 10, ch - 20); tempCtx.fillStyle = 'black' tempCtx.fillText(text, cw - textWidth - 10 + 2, ch - 20 + 2); // just testing by adding tempCanvas to document document.body.appendChild(tempCanvas); return (tempCanvas.toDataURL()); } body { background-color: ivory; padding: 20px; } canvas { border: 1px solid red; } <canvas id="canvas" width=300 height=300></canvas> <h2>Watermarked...</h2>

回答 1 投票 0

Phaser 3:使用 TrueType (.ttf) 字体显示的文本呈现扭曲/模糊

我正在通过 CSS 和字体定义加载 .ttf 文件。 然而,在游戏中,文字变得模糊。 这是我首先尝试的(字体名称是truetypetest): this.sampleText = this.scene.add.

回答 1 投票 0

通过JS重叠播放音频

我有以下基于画布的游戏的 JS 代码。 var EXPLOSION = "声音/爆炸.wav"; 函数 playSound(str, vol) { var snd = new Audio(); snd.src = str; snd.体积=体积; snd.pl...

回答 8 投票 0

Html Canvas 在渲染图像中添加文本或图像

我正在尝试在画布生成的图像中添加添加文本(水印) 这是我的代码。 html2canvas($("#frame"), { onrendered:函数(画布){ $("#outputImage").html(

回答 2 投票 0

如何在HTML5 Canvas中绘制具有动态旋转值的水印?

我正在使用 HTML5,我正在尝试使用文本在图像上绘制水印。 我有以下代码: 我正在使用 HTML5,我正在尝试使用文本在图像上绘制水印。 我有以下代码: <html> <body onload="addWaterMarkOnPage();"> <div id="pageContainer" style="width: 612px; height: 792px;"> <canvas id="page1" width="612" height="792"></canvas> //image loading canvas </canvas> </div> </body> <html> JavaScript function addWaterMarkOnPage() { var watermarkCanvas=document.createElement("canvas"); watermarkCanvas.id="watermark"; var parentDivElement=document.getElementById("pageContainer") var parentCanvasElment=document.getElementById("page"); watermarkCanvas.width=parentCanvasElment.width; watermarkCanvas.height=parentCanvasElment.height; watermarkCanvas.setAttribute("style","position:absolute") if(parentDivElement.firstChild) parentDivElement.insertBefore(watermarkCanvas, parentDivElement.firstChild); else parentDivElement.appendChild(watermarkCanvas); var watermarkContext=watermarkCanvas.getContext('2d'); watermarkContext.globalAlpha=0.5; watermarkContext.beginPath(); var metrics = watermarkContext.measureText("WaterMark Demo"); var width = metrics.width; watermarkContext.rotate( (Math.PI / 180) * -45); //rotate 25 degrees watermarkContext.font = "72px comic Sans MS" ; watermarkContext.fillStyle = "Red"; watermarkContext.fillText("WaterMark Demo",-width*2,72); watermarkContext.fill(); } 我想在页面中对角绘制文本(“WaterMark Demo”)。我尝试了很多方法,但没有成功。 这是一些改进的代码: var container = document.getElementById("pageContainer") var origCanvas = document.getElementById("page1"); var wmCanvas = document.createElement("canvas"); wmCanvas.id = "watermark"; wmCanvas.width = origCanvas.width; wmCanvas.height = origCanvas.height; wmCanvas.setAttribute("style", "position:absolute;border:1px solid black") if (container.firstChild) container.insertBefore(wmCanvas, container.firstChild); else container.appendChild(wmCanvas); var wmContext = wmCanvas.getContext('2d'); wmContext.globalAlpha = 0.5; // setup text for filling wmContext.font = "72px Comic Sans MS"; wmContext.fillStyle = "red"; // get the metrics with font settings var metrics = wmContext.measureText("WaterMark Demo"); var width = metrics.width; // height is font size var height = 72; // change the origin coordinate to the middle of the context wmContext.translate(origCanvas.width / 2, origCanvas.height / 2); // rotate the context (so it's rotated around its center) wmContext.rotate(-Math.atan(origCanvas.height / origCanvas.width)); // as the origin is now at the center, just need to center the text wmContext.fillText("WaterMark Demo", -width / 2, height / 2); <div id="pageContainer" style="width: 612px; height: 792px;"> <canvas id="page1" width="612" height="792"> //image loading canva </canvas> </div> 工作于:http://jsfiddle.net/EAXc9/7/ 深受启发:https://stackoverflow.com/a/5400970/2249185

回答 1 投票 0

为什么 HTML canvas getContext() 方法名为 getContext() 而不是 setContext()?

基于此方法的使用方式,渲染上下文似乎是 html canvas 元素的“设置”。您可以将其设置为“2d”、“webgl”、“webgl2”或“webgpu” 对于

回答 1 投票 0

使用 Fabric.js 选择画布上的所有对象

有没有一种方法可以显式选择特定时间出现的所有对象。 使用鼠标选择全部即可轻松完成此操作。是否有类似名为“选择...”的按钮的代码解决方案

回答 5 投票 0

为什么我的代码有时会正确地影响 imageData.data,而有时会以意想不到的方式(随机)影响 imageData.data?

我有一个代码,应该通过分别对左上四分之一和左下四分之一应用拉普拉斯滤波器来影响图像。但这样做时,有时第二次应用...

回答 1 投票 0

在 HTML Canvas 上并排显示多个视频

我可以使用以下代码在画布中显示一个视频: 让动画句柄; const canvas = document.querySelector("canvas"); const ctx = canvas.getContext("2d&q...

回答 1 投票 0

HTML5 Canvas + 下标和上标

我想在画布中填充文本作为下标和上标选项。我该如何实现这一目标。 请帮忙。

回答 3 投票 0

为什么这个 SVG 过滤器不能在使用 Chrome 的画布上下文中工作?

我有一个 SVG 过滤器保存在与画布托管在同一网站上的文件中。画布尝试使用该过滤器来绘制过滤后的图像,但会渲染原始图像,忽略

回答 1 投票 0

如何在循环内渲染 HTML5 画布

我正在尝试执行以下操作: 我正在运行一个 for 循环,每次获得新信息并想将其绘制在画布上时。 问题是画布是在...

回答 2 投票 0

使用 HTML 绘制箭头 <canvas>

我想使用 和 JavaScript 绘制箭头。我已经使用二次函数实现了它,但是我在计算箭头的旋转角度时遇到问题...... 有没有人有...

回答 16 投票 0

画布:缩放和平移

我正在努力使这张画布绘图能够放大、缩小和平移。有一些平移和缩放图像的示例,但我的情况不同,我不知道应该做什么或如何......

回答 2 投票 0

使用Canvas API时有哪些典型的设计模式?

我开始使用 Canvas API 进行图形编程,但我还没有看到任何重用画布代码的设计模式。到目前为止,我只看到了使用全局画布对象和

回答 2 投票 0

如何自动将工具提示文本内容换行为多行?

我正在使用 ChartJS 生成一些图表。数据点工具提示是通过配置选项使用回调生成的: 工具提示:{ 位置:'平均', 模式:'索引', 相交:

回答 2 投票 0

html5画布上下文.fillStyle不起作用

第一次尝试canvas是为了制作一个游戏。我显示了一个图像,但奇怪的是 fillStyle 方法似乎不起作用。 (至少画布背景...

回答 4 投票 0

带圆角的圆环图 - 有可能吗? [已关闭]

我需要将其实现为圆环图 - 我四处寻找 css/svg/canvas 解决方案,但找不到任何可靠的方法。 我知道我可以将每个部分的角完全圆化,...

回答 2 投票 0

通过画布在页面上画笔效果

我正在研究必须在网页上创建类似画笔的效果的功能。 要求是背景中有多种可用的图案/纹理。还有你...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.