2012-04-18 40 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