Canvas toDataURL()方法正在保存低分辨率图像

Rohit Falor |

我在以下位置使用HTML5画布制作了一个多边形背景生成器:

http://codepen.io/rfalor/pen/LhinJ

这是相关代码:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var dataURL = canvas.toDataURL();
ctx.clearRect(0, 0, canvas.width, canvas.height);
document.getElementById('canvasImg').src = dataURL;

当用户单击画布,然后单击“准备图像”时,右键单击保存的图像的分辨率较低(300px x 150px),而不是画布分辨率。如何允许用户保存更高分辨率的图像?

洛克塔

问题是您要使用css而不是canvas元素widthandheight属性来调整画布的大小这样做时,您仅拉伸画布而不增加元素的坐标空间。

我在您的代码中添加了以下内容

canvas.width = 700;
canvas.height = 396;

然后我不得不稍微改变一下您的随机函数以接受一个数字,因为它永远不会是500。

function randomize(num) {
    var a = Math.floor(Math.random() * num);
    return a;
}

现在您可以这样称呼您lineTo

ctx.lineTo(randomize(canvas.width), randomize(canvas.height));
ctx.lineTo(randomize(canvas.width), randomize(canvas.height));

但是我知道你可能希望它成为让你不看形状的边缘比宽度和高度,但我想你可以解决这个问题了。

现场演示

下面是完整修改的代码。

var canvas = document.getElementById('canvas');

function randomize(num) {
    var a = Math.floor(Math.random() * num);
    return a;
}

function sides() {
    var a = Math.floor(Math.random() * 10);
    return a;
}

function getRndColor() {
    var r = 255 * Math.random() | 0,
        g = 255 * Math.random() | 0,
        b = 255 * Math.random() | 0,
        alpha = 0.1; //Math.random().toFixed(1);
    var final = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')';
    return final;
}

$('*').click(function () {
    clearInterval(timer);
    $('button').show();
});

$('button').click(function () {
    $(this).css('left', '-400px');
    $('h3').text("Right click and save a beautiful background!");
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var dataURL = canvas.toDataURL();
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    document.getElementById('canvasImg').src = dataURL;
    $('#canvasImg').css('border', '5px solid black');
    $('#canvas').hide();
    $('#canvasImg').show();
});

if (canvas.getContext) {
    var ctx = canvas.getContext('2d');
    var left = true;

    canvas.width = 700;
    canvas.height = 396;

    var timer = setInterval(function () {
        for (var i = 1; i <= 1000; i++) {
            ctx.beginPath();
            if (left) {
                ctx.moveTo(0, randomize(canvas.height));
                left = false;
            } else {
                ctx.moveTo(randomize(canvas.width), 0);
                left = true;
            }
            ctx.lineTo(randomize(canvas.width), randomize(canvas.height));
            ctx.lineTo(randomize(canvas.width), randomize(canvas.height));
            ctx.fillStyle = getRndColor();
            ctx.fill();
        }
    }, 1000);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用较低分辨率的图像

来自分类Dev

调整图像大小会降低分辨率

来自分类Dev

低分辨率图像加载时间太长

来自分类Dev

QT-保存较低分辨率的QPixmap

来自分类Dev

Cordova iOS-CANVAS图像分辨率

来自分类Dev

从高分辨率图像生成大量低分辨率图像

来自分类Dev

低分辨率IONIC CAMERA

来自分类Dev

快速的图像加载方法,具有多种背景的低分辨率到高分辨率-Javascript解决方案?

来自分类Dev

首先加载低分辨率背景图像,然后加载高分辨率图像

来自分类Dev

几秒钟后显示低分辨率图像,然后显示高分辨率图像(HTML)

来自分类Dev

如何为高分辨率静态图像和低分辨率(视频)预览配置AVCaptureSession?

来自分类Dev

eBay API返回低分辨率缩略图,而不是卖家上传的图像

来自分类Dev

需要将较低分辨率的图像“拉伸”到屏幕尺寸

来自分类Dev

在低分辨率灰度图像中找到重叠圆的中心

来自分类Dev

PHImageManager.requestImageForAsset在iOS Swift中返回低分辨率图像

来自分类Dev

HTML:发送低分辨率图像版本作为Base64后备

来自分类Dev

较低分辨率的自举布局

来自分类Dev

更改Windows低分辨率平滑算法

来自分类Dev

Lubuntu 14.04(Sis)上的低分辨率

来自分类Dev

Dock显示低分辨率图标

来自分类Dev

Cordova-jQuery Mobile图标低分辨率

来自分类Dev

GNOME 分数缩放优势与较低分辨率

来自分类Dev

更新后的 Nvidia 低分辨率

来自分类Dev

下载高分辨率图片时如何显示低分辨率图片?

来自分类Dev

下载高分辨率图片时如何显示低分辨率图片?

来自分类Dev

Qt Designer - 使用高分辨率。需要低分辨率版本

来自分类Dev

设置Facebook canvas unity3d的分辨率

来自分类Dev

如何通过与低分辨率裁剪图像进行比较来从另一个获取裁剪图像

来自分类Dev

当使用较大的分辨率时,PHP imagejpeg()返回黑色图像,但对于较低分辨率的图像可以正常工作

Related 相关文章

  1. 1

    使用较低分辨率的图像

  2. 2

    调整图像大小会降低分辨率

  3. 3

    低分辨率图像加载时间太长

  4. 4

    QT-保存较低分辨率的QPixmap

  5. 5

    Cordova iOS-CANVAS图像分辨率

  6. 6

    从高分辨率图像生成大量低分辨率图像

  7. 7

    低分辨率IONIC CAMERA

  8. 8

    快速的图像加载方法,具有多种背景的低分辨率到高分辨率-Javascript解决方案?

  9. 9

    首先加载低分辨率背景图像,然后加载高分辨率图像

  10. 10

    几秒钟后显示低分辨率图像,然后显示高分辨率图像(HTML)

  11. 11

    如何为高分辨率静态图像和低分辨率(视频)预览配置AVCaptureSession?

  12. 12

    eBay API返回低分辨率缩略图,而不是卖家上传的图像

  13. 13

    需要将较低分辨率的图像“拉伸”到屏幕尺寸

  14. 14

    在低分辨率灰度图像中找到重叠圆的中心

  15. 15

    PHImageManager.requestImageForAsset在iOS Swift中返回低分辨率图像

  16. 16

    HTML:发送低分辨率图像版本作为Base64后备

  17. 17

    较低分辨率的自举布局

  18. 18

    更改Windows低分辨率平滑算法

  19. 19

    Lubuntu 14.04(Sis)上的低分辨率

  20. 20

    Dock显示低分辨率图标

  21. 21

    Cordova-jQuery Mobile图标低分辨率

  22. 22

    GNOME 分数缩放优势与较低分辨率

  23. 23

    更新后的 Nvidia 低分辨率

  24. 24

    下载高分辨率图片时如何显示低分辨率图片?

  25. 25

    下载高分辨率图片时如何显示低分辨率图片?

  26. 26

    Qt Designer - 使用高分辨率。需要低分辨率版本

  27. 27

    设置Facebook canvas unity3d的分辨率

  28. 28

    如何通过与低分辨率裁剪图像进行比较来从另一个获取裁剪图像

  29. 29

    当使用较大的分辨率时,PHP imagejpeg()返回黑色图像,但对于较低分辨率的图像可以正常工作

热门标签

归档