我有一个带有一些涂鸦的画布元素。
我正在使用以下内容将画布转换为jpeg:
var data = canvas.toDataURL( "image/jpeg", 0.5 );
var img = new Image();
img.src = data;
$( "body" ).append( img );
但是我得到的不是我所画的涂鸦,而是一个纯黑色的jpeg图片。
有人可以告诉我哪里出了问题吗?
谢谢!
我有一个带有一些涂鸦的画布元素。
我正在使用以下内容将画布转换为jpeg:
var data = canvas.toDataURL( "image/jpeg", 0.5 );
var img = new Image();
img.src = data;
$( "body" ).append( img );
但是我得到的不是我所画的涂鸦,而是一个纯黑色的jpeg图片。
有人可以告诉我哪里出了问题吗?
谢谢!
这是因为JPEG格式不支持透明的背景,如果想要支持透明度,应该使用PNG格式(默认扩展名)。或者您可以使用fillStyle
和fillRect
来设置一个非透明的填充颜色。
创建类型为"image/jpeg"
的图像具有默认的黑色背景。考虑下面的代码片段,左边是画布,右边是捕获的图像:
var canvas = $("#c").get(0), ctx = canvas.getContext("2d");
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect(40,60,20,20);
var data = canvas.toDataURL("image/jpeg");
var img = new Image();
img.src = data;
$( "body" ).append( img );
var data = canvas.toDataURL("image/png");
var img = new Image();
img.src = data;
$( "body" ).append( img );
canvas { border: thin solid green; }
img { border: thin solid black; margin-right: 5px; }
body { background-color: #DFF; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="c" width="100"></canvas>
如果你只在画布上绘制了黑色形状,你将无法在默认的黑色JPEG背景下看到它们。
如果你改用image/png
类型,背景默认将是透明的。