2012-04-18 113 views
17

我正在尝试制作一个javascript图像颜色选择器。 可以在画布中打开本地图像,而无需将其上传到服务器?在画布中打开本地图像

function draw() { 
    var ctx = document.getElementById('canvas').getContext('2d'); 
    var img = new Image(); 
    img.onload = function(){ 
     ctx.drawImage(img,0,0); 
    } 

    img.src = $('#uploadimage').val(); 
} 

<input type='file' name='img' size='65' id='uploadimage' /> 
+0

呃,为什么不呢?指定相对路径。 – kirilloid 2012-04-18 12:22:34

+0

您可以使用[离线应用程序](http://www.w3.org/TR/offline-webapps/)。 – Oded 2012-04-18 12:22:45

回答

31

不支持所有的浏览器(IE和Opera据我所知),但你可以使用File API

function draw() { 
    var ctx = document.getElementById('canvas').getContext('2d') 
    , img = new Image() 
    , f = document.getElementById("uploadimage").files[0] 
    , url = window.URL || window.webkitURL 
    , src = url.createObjectURL(f); 

    img.src = src; 
    img.onload = function(){ 
    ctx.drawImage(img,0,0); 
    url.revokeObjectURL(src); 
    } 
} 

<input type='file' name='img' size='65' id='uploadimage' /> 

得到一个数据URI我加了fiddle here作为一个例子。

+0

Thx很多,这是完美的。 – user1093555 2012-04-18 13:19:40

+0

这样的耻辱我只能提高这一次:-) – Potherca 2013-03-06 13:23:05