2014-11-24 5 views
0

Я имею в виду Get image data in JavaScript?Как конвертировать предварительно загруженное изображение в данные base64 в JQuery

Использование JQuery, я хотел преобразовать предварительно загруженным IMG в base64 кодированные данные. Я попробовал функцию, которую я нашел по указанному URL, следующим образом, который дал мне ошибки.

Функция, которую я нашел из упомянутой ссылке:

function getBase64Image(img) { 
    // Create an empty canvas element 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 

    // Copy the image contents to the canvas 
    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 

    // Get the data-URL formatted image 
    // Firefox supports PNG and JPEG. You could check img.src to 
    // guess the original format, but be aware the using "image/jpg" 
    // will re-encode the image. 
    var dataURL = canvas.toDataURL("image/png"); 

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
} 

Как я пробовал:

var a = $('[active_contact][serial=1] img'); 
console.log(get_base64_image(a)); 

Ошибка, которую я получил от firbug консоли:

TypeError: Argument 1 of CanvasRenderingContext2D.drawImage could not be converted to any of: HTMLImageElement, HTMLCanvasElement, HTMLVideoElement. 
get_base64_image() 

ctx.drawImage(img, 0, 0); 

Как я могу получить эта работа сработала? Я хочу использовать jQuery для преобразования предварительно загруженных изображений в base64 для повторного использования. Любые лучшие идеи приветствуются.

ответ

0

Убедитесь, что вы передаете в самом элементе изображения (и что он правильно загружен):

var a = $('[active_contact][serial=1] img')[0]; // notice [0] at the end = image 
0

Ваши имена функций не совпадают.

В описании. это getBase64Image, а когда вы его вызываете, вы написали get_base64_image.

Я искал такой код, как этот, и ваш работал для меня после смены имени.

Смежные вопросы