javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

javascript-画布drawImage缩放

我正在尝试按比例将图像缩放到画布。 我可以使用固定的宽度和高度来缩放它:

context.drawImage(imageObj, 0, 0, 100, 100)

但是我只想调整宽度,并按比例调整高度。 类似于以下内容:

context.drawImage(imageObj, 0, 0, 100, auto)

我看过我能想到的任何地方,但没有想到是否有可能。

trans by 2020-01-17T15:18:42Z

html-将画布居中

如何使用HTML5 canvas标记页面,以使div

  1. 占宽度的80%

  2. 具有有效定义比例的相应像素高度和宽度(并在画布拉伸到80%时按比例保持)

  3. 垂直和水平居中

您可以假定canvas是页面上唯一的东西,但是如有必要,可以将其封装在divs中。

trans by 2020-01-13T22:46:50Z

javascript-为什么requestAnimationFrame比setInterval或setTimeou更好

为什么我应该使用requestAnimationFrame而不是setTimeout或setInterval?

这个自我解答的问题是一个文档示例。

trans by 2019-12-30T23:20:53Z

Javascript-HTML5 Canvas drawImage ratio Bug I

我想使用HTML5 Canvas调整从客户端iOS摄像头拍摄的图像的大小,但是我一直在运行这个怪异的bug,该图像中的图像比率如果大于1.5mb,则比例错误

它可以在桌面上运行,但不能在具有媒体上传API的最新iOS版本中使用。

您可以在此处查看示例:[http://jsbin.com/ekuros/1]

知道如何解决这个问题吗? 这是内存问题吗?

$('#file').on('change', function (e) {
    var file = e.currentTarget.files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        var image = $('<img/>');
        image.on('load', function () {
            var square = 320;
            var canvas = document.createElement('canvas');

            canvas.width = square;
            canvas.height = square;

            var context = canvas.getContext('2d');
            context.clearRect(0, 0, square, square);
            var imageWidth;
            var imageHeight;
            var offsetX = 0;
            var offsetY = 0;

            if (this.width > this.height) {
                imageWidth = Math.round(square * this.width / this.height);
                imageHeight = square;
                offsetX = - Math.round((imageWidth - square) / 2);
            } else {
                imageHeight = Math.round(square * this.height / this.width);
                imageWidth = square;    
                offsetY = - Math.round((imageHeight - square) / 2);            
            }

            context.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);
            var data = canvas.toDataURL('image/jpeg');

            var thumb = $('<img/>');
            thumb.attr('src', data);
            $('body').append(thumb);
        });
        image.attr('src', e.target.result);
    };
    reader.readAsDataURL(file);
});
trans by 2019-12-29T20:39:40Z

HTML5画布和抗锯齿

如何在画布上打开抗锯齿。

以下代码无法画出一条流畅的线:

var context = mainCanv.getContext("2d");
if (context) {
   context.moveTo(0,0);
   context.lineTo(100,75);

   context.strokeStyle = "#df4b26";
   context.lineWidth = 3;
   context.stroke();
}
trans by 2019-12-28T11:42:06Z

javascript-有什么方法可以克隆HTML5 canvas元素及其内容?

有什么方法可以创建包含所有绘制内容的canvas元素的深层副本?

trans by 2019-12-27T06:42:46Z

javascript-使用<canvas>作为CSS背景

我可以使用canvas元素作为CSS背景吗?

trans by 2019-11-12T10:13:00Z

在不使用画布的情况下在JavaScript中调整Base-64图像的大小

我需要一种无需使用HTML元素即可在JavaScript中调整图片大小的方法。

我的移动HTML应用程序会拍照,然后将其转换为base64字符串。 此后,在将它们发送到API之前,我需要调整它们的大小,以节省存储空间。

我正在寻找一种不同的并且更合适的方式来调整它们的大小,然后使用canvas元素。 有办法吗?

trans by 2019-11-10T17:16:13Z

javascript-在HTML5画布上绘制旋转文本

我正在开发的Web应用程序的一部分要求我创建条形图以显示各种信息。 我认为,如果用户的浏览器具有功能,则可以使用HTML5 canvas元素绘制它们。 我为我的图形绘制线条和条形没有问题,但是在标注轴,条形或线形标签时遇到了障碍。 如何将旋转的文本绘制到画布元素上,使其与要标记的项目对齐? 几个示例包括:

  • 将文字旋转90度计数器顺时针标记y轴
  • 将文字旋转90度计数器顺时针方向在垂直方向上标记条条状图
  • 将文字任意旋转到在折线图上标记线

任何指针将不胜感激。

trans by 2019-10-26T21:25:27Z

javascript-HTML Canvas全屏

我正在使用HTML画布处理以下应用程序:[http://driz.co.uk/particles/]

目前将其设置为640x480像素,但我想使其全屏显示,因为它将显示为投影仪。 但是据我所知,我不能将画布大小设置为100%,因为变量只能是数字而不是%。 使用CSS只会拉伸它,而不是使其变成全屏显示。

有任何想法吗?

编辑:尝试使用jQuery找到高度和宽度,但它打破了画布的任何想法,为什么?

var $j = jQuery.noConflict();


var canvas;
var ctx;
var canvasDiv;
var outerDiv;

var canvasW = $j('body').width();
var canvasH = $j('body').height();

//var canvasW     = 640;
//var canvasH     = 480;

var numMovers   = 550;
var movers      = [];
var friction    = .96;
var radCirc     = Math.PI * 2;

var mouseX, mouseY, mouseVX, mouseVY, prevMouseX = 0, prevMouseY = 0;   
var isMouseDown = true;



function init()
{
    canvas = document.getElementById("mainCanvas");

    if( canvas.getContext )
    {
        setup();
        setInterval( run , 33 );
    }
}

function setup()
{
    outerDiv = document.getElementById("outer");
    canvasDiv = document.getElementById("canvasContainer");
    ctx = canvas.getContext("2d");

    var i = numMovers;
    while( i-- )
    {
        var m = new Mover();
        m.x  = canvasW * .5;
        m.y  = canvasH * .5;
        m.vX = Math.cos(i) * Math.random() * 25;
        m.vY = Math.sin(i) * Math.random() * 25;
        m.size = 2;
        movers[i] = m;
    }

    document.onmousedown = onDocMouseDown;
    document.onmouseup   = onDocMouseUp;
    document.onmousemove = onDocMouseMove;
}

function run()
{
    ctx.globalCompositeOperation = "source-over";
    ctx.fillStyle = "rgba(8,8,12,.65)";
    ctx.fillRect( 0 , 0 , canvasW , canvasH );
    ctx.globalCompositeOperation = "lighter";

    mouseVX    = mouseX - prevMouseX;
    mouseVY    = mouseY - prevMouseY;
    prevMouseX = mouseX;
    prevMouseY = mouseY;

    var toDist   = canvasW / 1.15;
    var stirDist = canvasW / 8;
    var blowDist = canvasW / 2;

    var Mrnd   = Math.random;
    var Mabs   = Math.abs;
    var Msqrt  = Math.sqrt;
    var Mcos   = Math.cos;
    var Msin   = Math.sin;
    var Matan2 = Math.atan2;
    var Mmax   = Math.max;
    var Mmin   = Math.min;

    var i = numMovers;
    while( i-- )
    {
        var m  = movers[i];
        var x  = m.x;
        var y  = m.y;
        var vX = m.vX;
        var vY = m.vY;

        var dX = x - mouseX;
        var dY = y - mouseY; 
        var d = Msqrt( dX * dX + dY * dY );
        var a = Matan2( dY , dX );
        var cosA = Mcos( a );
        var sinA = Msin( a );

        if( isMouseDown )
        {
            if( d < blowDist )
            {
                var blowAcc = ( 1 - ( d / blowDist ) ) * 2;
                vX += cosA * blowAcc + .5 - Mrnd();
                vY += sinA * blowAcc + .5 - Mrnd();
            }
        }

        if( d < toDist )
        {
            var toAcc = ( 1 - ( d / toDist ) ) * canvasW * .0014;
            vX -= cosA * toAcc;
            vY -= sinA * toAcc;
        }

        if( d < stirDist )
        {
            var mAcc = ( 1 - ( d / stirDist ) ) * canvasW * .00022;
            vX += mouseVX * mAcc;
            vY += mouseVY * mAcc;           
        }


        vX *= friction;
        vY *= friction;

        var avgVX = Mabs( vX );
        var avgVY = Mabs( vY );
        var avgV = ( avgVX + avgVY ) * .5;

        if( avgVX < .1 ) vX *= Mrnd() * 3;
        if( avgVY < .1 ) vY *= Mrnd() * 3;

        var sc = avgV * .45;
        sc = Mmax( Mmin( sc , 3.5 ) , .4 );


        var nextX = x + vX;
        var nextY = y + vY;

        if( nextX > canvasW )
        {
            nextX = canvasW;
            vX *= -1;
        }
        else if( nextX < 0 )
        {
            nextX = 0;
            vX *= -1;
        }

        if( nextY > canvasH )
        {
            nextY = canvasH;
            vY *= -1;
        }
        else if( nextY < 0 )
        {
            nextY = 0;
            vY *= -1;
        }


        m.vX = vX;
        m.vY = vY;
        m.x  = nextX;
        m.y  = nextY;

        ctx.fillStyle = m.color;
        ctx.beginPath();
        ctx.arc( nextX , nextY , sc , 0 , radCirc , true );
        ctx.closePath();
        ctx.fill();     
    }

    //rect( ctx , mouseX - 3 , mouseY - 3 , 6 , 6 );
}


function onDocMouseMove( e )
{
    var ev = e ? e : window.event;
    mouseX = ev.clientX - outerDiv.offsetLeft - canvasDiv.offsetLeft;
    mouseY = ev.clientY - outerDiv.offsetTop  - canvasDiv.offsetTop;
}

function onDocMouseDown( e )
{
    isMouseDown = true;
    return false;
}

function onDocMouseUp( e )
{
    isMouseDown = true;
    return false;
}



// ==========================================================================================


function Mover()
{
    this.color = "rgb(" + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + ")";
    this.y     = 0;
    this.x     = 0;
    this.vX    = 0;
    this.vY    = 0;
    this.size  = 0; 
}


// ==========================================================================================


function rect( context , x , y , w , h ) 
{
    context.beginPath();
    context.rect( x , y , w , h );
    context.closePath();
    context.fill();
}


// ==========================================================================================
trans by 2019-10-12T19:03:02Z

ajax-在jQuery中旋转Div元素

尝试旋转div元素...这可能是DOM亵渎,它是否可以与canvas元素一起使用? 我不确定-如果有人对它如何工作或为什么不起作用有任何想法,我很想知道。 谢谢。

trans by 2019-10-10T01:07:46Z

javascript-Pdf.js:使用base64文件源而不是u呈现pdf文件

我正在尝试使用pdf.js从pdf渲染页面

通常,使用网址,我可以这样做:

PDFJS.getDocument("http://www.server.com/file.pdf").then(function getPdfHelloWorld(pdf) {
  //
  // Fetch the first page
  //
  pdf.getPage(1).then(function getPageHelloWorld(page) {
    var scale = 1.5;
    var viewport = page.getViewport(scale);

    //
    // Prepare canvas using PDF page dimensions
    //
    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    //
    // Render PDF page into canvas context
    //
    page.render({canvasContext: context, viewport: viewport});
  });
});

但是在这种情况下,我将文件放在base64中而不是url中:

data:application/pdf;base64,JVBERi0xLjUKJdDUxdgKNSAwIG9iaiA8PAovTGVuZ3RoIDE2NjUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVhLc9s2...

怎么做到这一点?

trans by 2019-10-05T11:18:59Z

javascript-将画布缩放到鼠标光标

我正在编写一个HTML5 <canvas>项目,该项目涉及使用滚轮放大和缩小图像。我想像Google Maps一样朝光标方向缩放,但是我完全不知道如何计算运动。

我所拥有的:图像x和y(左上角); 图像宽度和高度; 光标x和y相对于画布中心的位置。

trans by 2019-10-03T23:27:16Z

Javascript-从画布上获取像素颜色

是否可以在鼠标下获取RGB值像素? 有完整的例子吗? 这是我到目前为止的内容:

<script>
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  var img = new Image();
  img.src = 'Your URL';

  img.onload = function(){
    ctx.drawImage(img,0,0);


  };

  canvas.onmousemove = function(e) {
        var mouseX, mouseY;

        if(e.offsetX) {
            mouseX = e.offsetX;
            mouseY = e.offsetY;
        }
        else if(e.layerX) {
            mouseX = e.layerX;
            mouseY = e.layerY;
        }
        var c = ctx.getImageData(mouseX, mouseY, 1, 1).data;

        $('#ttip').css({'left':mouseX+20, 'top':mouseY+20}).html(c[0]+'-'+c[1]+'-'+c[2]);
  };
}

</script>
trans by 2019-10-01T17:49:52Z

如何在HTML5 Canvas元素中使用自定义字体?

我看过诸如Cufon和typeface.js之类的东西,但它们似乎是SIFR的替代品,不允许您设置自由格式的坐标并在<canvas>上绘制自定义类型

任何人有任何想法吗?

trans by 2019-09-30T22:02:50Z

javascript-禁止用户浏览箭头键

我正在使用画布和JavaScript开发游戏。

当页面长于屏幕(注释等)时,按向下箭头将页面向下滚动,使游戏无法进行。

当播放器只想向下移动时,如何防止窗口滚动?

我猜是Java游戏,只要用户点击游戏,这都不是问题。

我尝试了以下解决方案:如何使用箭头键禁用FF中的页面滚动,但是无法正常工作。

trans by 2019-09-25T20:34:12Z

javascript - Unicoin挖掘和画布点击

我真的想自动化unicoin挖掘,以便它可以在后台继续进行,同时我正在做一些重要的事情,比如回答有关stackoverflow的问题。 我注意到有一个canvas#uc-rockcanvas元素,你可以点击岩石。 单击下来似乎添加类md,然后释放单击删除md

有没有办法使用JavaScript与画布的特定元素进行交互,以便您可以触发对它们的点击?

trans by 2019-09-20T09:48:43Z

SVG和HTML5 Canvas有什么区别?

SVG和HTML5 Canvas有什么区别? 他们似乎都对我这样做。 基本上,他们都使用坐标点绘制矢量图稿。

我错过了什么? SVG和HTML5 Canvas有哪些主要区别? 我为什么要选择一个而不是另一个呢?

trans by 2019-09-08T19:09:54Z

javascript - 如何将图像添加到画布

我正在用HTML中的新canvas元素进行一些实验。

我只是想在画布上添加一个图像,但由于某些原因它不起作用。

我有以下代码:

HTML

<canvas id="viewport"></canvas>

CSS

canvas#viewport { border: 1px solid white; width: 900px; }

JS

var canvas = document.getElementById('viewport'),
context = canvas.getContext('2d');

make_base();

function make_base()
{
  base_image = new Image();
  base_image.src = 'img/base.png';
  context.drawImage(base_image, 100, 100);
}

图像存在,我没有JavaScript错误。 图像不显示。

它一定是非常简单的我错过了......

trans by 2019-09-01T18:44:32Z

javascript - 为什么canvas.toDataURL()会抛出安全异常?

我睡眠不足还是什么? 以下代码

var frame=document.getElementById("viewer");
frame.width=100;
frame.height=100;

var ctx=frame.getContext("2d");
var img=new Image();
img.src="http://www.ansearch.com/images/interface/item/small/image.png"

img.onload=function() {
    // draw image
    ctx.drawImage(img, 0, 0)

    // Here's where the error happens:
    window.open(frame.toDataURL("image/png"));
}

抛出这个错误:

SECURITY_ERR: DOM Exception 18

这不可能不起作用! 请问有人解释一下吗?

trans by 2019-08-25T21:04:37Z

1 2 3 4 下一页 共4页