大家好,
我试图从websocket服务器(在.NET中)检索图像我将图像作为字节发送然后在客户端检索它,在客户端检索代码(使用canvas和JavaScript):
var c=document.GetElementById("myCanvas");
var ctx=c.getContext("2d");
ws.onmessage=function(evt)
{
var image=new Image();
image.src=URL.createObjectURL(evt.data);
ctx.drawImage(image,0,0);
}
Run Code Online (Sandbox Code Playgroud)
它完美地在firefox上显示图片,但是在Chrome上,它只返回undefined并且不会通过createObjectURL加载图像我使用的是Chrome 18.0.1025.162
任何的想法?
首先,我想说我做了很多研究,并试着自己没有任何成功.
我正在使用Canvas开发一个类似MSPaint的应用程序,我想创建一个像手工绘图一样逼真的铅笔工具 ......以下是使用默认工具链接的示例: http://www.onemotion .COM /闪光灯/草图漆/
我尝试使用mousespeed和linewidth属性但它运行不正常(整个行在我移动鼠标时放大和缩小).我不知道算法作用于像素原始数据.
您是否知道现有的东西或适用的算法?非常感谢您的帮助
编辑
我决定添加我选择的解决方案,因为它似乎让很多人感兴趣.因此,到目前为止,我发现的最好的事情是使用此处解释的技术在画布上绘制图像:http://css.dzone.com/articles/sketching-html5-canvas-and.它就像一个魅力,结果真的很有说服力,这很容易实现.在这里试试:http://tricedesigns.com/portfolio/sketch/brush.html#
这是我的问题:
$("#gallery > img").live('click',function() {
$(this).prev().css("background" , "#f99"); // WORKS !
var src = $(this).prev().src; // DOESN'T WORK (src is undefined)
});
Run Code Online (Sandbox Code Playgroud)
我在google chrome调试器中看到prev()函数返回一个jQuery.fn.jQuery.init [1]对象...它似乎包含我希望在索引0处使用prev()的HTMLImageElement,但是使用它就像数组不起作用.
我迷路了,我可以帮忙...谢谢你们
我正在使用HTML5画布创建一个Web应用程序来绘制图像(比如绘制web),我尝试实现"撤消"(ctrl + Z)和"重做"功能,这里我面临着一个画布元素数组的奇怪问题.有时,当我按下ctrl + Z进行撤消时,会出现一个空白图像,但是数据在数组中并且我指向正确的元素(因为当我使用undo/redo时,我设法以正确的顺序校正图像).
如果你能看看下面的代码,我将不胜感激,我已经花了很多时间,我无法找到问题...... :-(
function Stack(firstImg , size) {
var drawStack = new Array();
var stackIndex = 0;
var stackTop = 0;
var stackFloor = 0;
var stackSize = size;
drawStack[0] = firstImg;
this.add = function() {
drawStack[++stackIndex%stackSize] = cvs.toDataURL("image/png");
if (stackIndex >= stackSize) stackFloor = (stackIndex +1) % stackSize ;
stackTop = stackIndex % stackSize;
}
this.undo = function () {
if (stackIndex%stackSize == stackFloor ) return;
clearCanvas();
var tmpImg = new Image();
tmpImg.src = drawStack[--stackIndex%stackSize]; …Run Code Online (Sandbox Code Playgroud)