2015-08-23 7 views
0

У меня есть фотография, вытащенная из API графиков Facebook, и я пытаюсь загрузить ее в мою базу данных, но мне нужно сначала преобразовать ее в базу 64, как это сделать в angularJS или Javascript , я попытался с помощью библиотеки: https://github.com/ninjatronic/angular-base64, но он не работаетконвертировать URL изображения в base64

$scope.prof_pic_link = $base64.encode(data.picture.data.url); 
    $scope.prof_pic_link = encodeURIComponent($scope.prof_pic_link); 
+0

http://stackoverflow.com/a/22172860/1675954 –

+3

Попробуйте проверить это: http://stackoverflow.com/questions/6150289/how-to-convert-image-into-base64-string-using-javascript – Grald

+1

http://jsfiddle.net/handtrix/xztfbx1m/ –

ответ

-1

Я использовал следующие функции для кодирования двоичных данных:

var base64_encode = function (data) { 
    // discuss at: http://phpjs.org/functions/base64_encode/ 
    // original by: Tyler Akins (http://rumkin.com) 
    // improved by: Bayron Guevara 
    // improved by: Thunder.m 
    // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // improved by: Rafał Kukawski (http://kukawski.pl) 
    // bugfixed by: Pellentesque Malesuada 
    // example 1: base64_encode('Kevin van Zonneveld'); 
    // returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' 
    // example 2: base64_encode('a'); 
    // returns 2: 'YQ==' 

    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/='; 
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, 
     ac = 0, 
     enc = '', 
     tmp_arr = []; 

    if (!data) { 
     return data; 
    } 

    do { // pack three octets into four hexets 
     o1 = data.charCodeAt(i++); 
     o2 = data.charCodeAt(i++); 
     o3 = data.charCodeAt(i++); 

     bits = o1 << 16 | o2 << 8 | o3; 

     h1 = bits >> 18 & 0x3f; 
     h2 = bits >> 12 & 0x3f; 
     h3 = bits >> 6 & 0x3f; 
     h4 = bits & 0x3f; 

     // use hexets to index into b64, and append result to encoded string 
     tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); 
    } while (i < data.length); 

    enc = tmp_arr.join(''); 

    var r = data.length % 3; 

    return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); 
} 
+0

Это будет кодировать URL-адрес ('http: // example.com/image.png' ->' aHR0cDovL2V4YW1wbGUuY29tL2ltYWdlLnBuZw == ', что легко выполнимо с помощью' btoa() '). Как вы кодируете изображение? (подсказка, [проверьте дубликат] (http://stackoverflow.com/questions/6150289/how-to-convert-image-into-base64-string-using-javascript)) – Kaiido

+0

Вы имеете в виду данныеURL? –

+0

Данные dataUrl для конвертированного изображения base64 - это всего лишь комбинация данных «: data/png, base64;» и значения base64 данных изображения. Ваше решение - это просто переписать метод atob, который бесполезен, если у вас есть только URL-адрес изображения. – Kaiido

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