2012-04-18 16 views
17

Próbuję wykonać próbnik kolorów obrazu javascript. Można otworzyć obraz lokalny na płótnie, bez przesyłania go na serwer?Otwórz obraz lokalny na płótnie

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

Erm, dlaczego nie? Określ względną ścieżkę. – kirilloid

+0

Można za pomocą [aplikacji offline] (http://www.w3.org/TR/offline-webapps/). – Oded

Odpowiedz

31

Nie jest obsługiwany we wszystkich przeglądarce (IE i Opera AFAIK), ale można dostać URI danych przy użyciu 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' /> 

dodałem fiddle here jako przykład.

+0

Thx dużo, to jest idealne. – user1093555

+0

Taki wstyd, że mogę tylko przegłosować to raz :-) – Potherca