html5 jpeg,HTML5画布,保存jpeg blob并从blob恢复到画布(HTML5 canvas, save jpeg blob and restore to canvas from bl...

HTML5画布,保存jpeg blob并从blob恢复到画布(HTML5 canvas, save jpeg blob and restore to canvas from blob)

我有一个包含图像的画布#mycanvas 。 我想从该图像中创建一个blob,最好是作为jpeg。 这是我如何创建blob

document.getElementById('mycanvas').toDataURL("image/jpeg").replace(/^data:image\/(png|jpeg);base64,/, "")

如何从此blob重新创建图像,并再次在#mycanvas显示它?

I have a canvas #mycanvas which contains an image. I want to create a blob out of that image, preferably as a jpeg. Here is how i create the blob

document.getElementById('mycanvas').toDataURL("image/jpeg").replace(/^data:image\/(png|jpeg);base64,/, "")

How do i recreate the image from this blob, and show it in #mycanvas again?

原文:https://stackoverflow.com/questions/18419246

更新时间:2020-08-12 15:08

最满意答案

这是我如何解决我的问题

function blob2canvas(canvas,blob){

var img = new Img;

var ctx = canvas.getContext('2d');

img.onload = function () {

ctx.drawImage(img,0,0);

}

img.src = blob;

}

调用canvas.toDataURL("image/jpeg")时收到blob

Here's how i solved my problem

function blob2canvas(canvas,blob){

var img = new Img;

var ctx = canvas.getContext('2d');

img.onload = function () {

ctx.drawImage(img,0,0);

}

img.src = blob;

}

The blob was received when calling canvas.toDataURL("image/jpeg")

相关问答

toBlob方法是异步的,需要两个参数,回调函数和图像类型(可选第三个参数用于质量): void canvas.toBlob(callback,type,encoderOptions); 例 if (typeof canvas.toBlob !== "undefined") {

canvas.toBlob(function(blob) {

// send the blob to server etc.

...

}, "image/jpeg", 0.75);

}

el

...

取消我们刚做的事情有什么意义呢? 虽然你不是。 如果你只是说出这些话,听起来就像是可能发生的事情,但事实并非如此。 像这样想: 您想要在同一个onDraw(Canvas)调用中应用一系列非常复杂的翻译和旋转。 现在,由于您应用于“ Canvas每次翻译/旋转都是按顺序进行的,因此您必须撤消上次对Canvas调整,或者在绘制任何要绘制的Canvas以某种方式计算基于上一次调整的新调整。 这很快就会变得非常混乱。 使用canvas.save()和canvas.restore()是简化这个过程的简单方法

...

您的类abc View用于布局中的某些位置,您可以轻松拍摄其屏幕截图。 Abc abc;

Bitmap bmp = viewToBitmap(abc);

Bitmap bmp = viewToBitmap(frameLayout);

Bitmap bmp = viewToBitmap(LinearLayout);

Bitmap bmp = viewToBitmap(AnyView);

public Bitmap viewToBitmap(View view) {

Bitmap

...

通过大量的试验和努力,不使用第三方,这里的答案也是有效的: $('#a').click(save);

function save(ev) {

$('#canvas')[0].toBlob((blob) => {

let URLObj = window.URL || window.webkitURL;

let a = document.createElement("a");

a.href = URLObj.createObjectURL(b

...

我认为有一些方法... 在点击发布后重新绘制所有内容 这很简单,但不是很有效。 只重绘修改过的部分 具有9个参数的drawImage只重绘改变的背景图像部分,然后重新绘制黑色文本。 点击之前保存图像数据然后恢复 这使用了2D上下文的getImageData和putImageData。 (不确定它是否被广泛实现。) 这里的规范: ImageData getImageData(in double sx, in double sy, in double sw, in double sh);

void p

...

存储很容易。 假设你有一个带有BLOB字段的mysql表用于图片.... 上传图像后,将文件内容存入内存,然后插入blob字段。 <?php

$file = '/tmp/MyImg.jpg';

// you migh want to escape it just in case

$data = file_get_contents($file);

// Insert into database

$sql = "INSERT INTO my_picture_table (`pictu

...

尝试以下建议: 改变自: $config['source_image'] = "uploads/" .$filename; 至: $config['source_image'] = "./uploads/" .$filename; Try below suggestion: Change from: $config['source_image'] = "uploads/" .$filename; To: $config['source_image'] = "./uploads/" .$filena

...

将Blob URL设置为img src而不是Blob let blobURL = URL.createObjectURL(blob);

rimage.src = blobURL;

当不再需要对Blob URL的引用时,可以按照过程撤销Blob URL URL.revokeObjectURL(blobURL);

Set a Blob URL as img src instead of a Blob let blobURL = URL.createObjectURL(blob);

rimage.s

...

这是我如何解决我的问题 function blob2canvas(canvas,blob){

var img = new Img;

var ctx = canvas.getContext('2d');

img.onload = function () {

ctx.drawImage(img,0,0);

}

img.src = blob;

}

调用canvas.toDataURL("image/jpeg")时收到blob Here's how

...

这应该解决它。 function drawLine(context, x1, y1, x2, y2) {

context.save();

context.translate(x1, y1);

context.beginPath(); //

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这种情况可能是因为HTML中的文本内容无法直接转换成Canvas的图像,需要使用Canvas的API将文本内容绘制到Canvas上。以下是一个简单的示例代码,可以将HTML中的文本内容绘制到Canvas上并导出为图片: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML to Canvas</title> </head> <body> <div id="content"> <h1>Hello, World!</h1> <p>This is some text that we want to convert to an image.</p> </div> <canvas id="canvas"></canvas> <script> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); // 获取要绘制的HTML元素 var content = document.getElementById('content'); // 设置Canvas的宽度和高度 canvas.width = content.offsetWidth; canvas.height = content.offsetHeight; // 将HTML文本内容绘制到Canvas上 var data = '<svg xmlns="http://www.w3.org/2000/svg" width="' + canvas.width + '" height="' + canvas.height + '">' + '<foreignObject width="100%" height="100%">' + '<div xmlns="http://www.w3.org/1999/xhtml">' + content.innerHTML + '</div>' + '</foreignObject>' + '</svg>'; var DOMURL = window.URL || window.webkitURL || window; var img = new Image(); var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'}); var url = DOMURL.createObjectURL(svg); img.onload = function() { // 绘制图像并导出为图片 ctx.drawImage(img, 0, 0); var png = canvas.toDataURL('image/png'); console.log(png); DOMURL.revokeObjectURL(png); }; img.src = url; </script> </body> </html> ``` 在这个例子中,我们首先获取了要绘制的HTML元素,然后将其内容用SVG格式包裹起来,并使用Canvas的API将SVG绘制到Canvas上。最后,我们将绘制完成的Canvas导出为PNG格式的图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值