2014-11-13 5 views
11

У меня есть требование, когда пользователь загрузит свое изображение, и мне нужно его преобразовать во что-то и отправить его в .Net REStful service. Я новичок в угловых js. Может кто-то пожалуйста, помогитеконвертировать изображение в base64 в angularjs

+1

можно дублировать из [Как преобразовать изображение в строку base64 с помощью javascript] (http://stackoverflow.com/questions/6150289/how-to-convert-image-into-base64-string-using-javascript) – user700284

+1

проверьте это http://stackoverflow.com/questions/17549968/how-to-encode -an-input-file-to-base64-in-angularjs – Satya

ответ

22

Ответ здесь https://stackoverflow.com/a/24880314/625189

Я бы порекомендовал вам использовать https://github.com/ninjatronic/angular-base64.

После выполнения инструкции по использованию этой библиотеки, вы можете просто вызов:

var imageData=$base64.encode(image); 

Не забудьте впрыснуть в модуле:

.module('myApp', ['base64']) 
+3

Этот плагин кодирует мой URL-адрес изображения, нет фактического изображения – Nick

+1

Ник, вам удалось кодировать изображение? – Norgul

1

Если данные изображения уже в базе64, попробуйте

<img alt="{{p.alt}}" data-ng-src="{{'data:image/png;base64,'+p.Photo}}" class="photo" /> 
+1

Хотя теоретически это не так, это противоположность тому, что просит ОП. – Desmond

1

Вы можете использовать угловую пользовательскую директиву для преобразования изображения base64. directive.js

myApp.directive('imgUpload', ['$rootScope',function (rootScope) { 
    return { 
    restrict: 'A', 
    link: function (scope, elem, attrs) { 
     var canvas = document.createElement("canvas"); 
     var extensions = 'jpeg ,jpg, png, gif'; 
     elem.on('change', function() { 
     reader.readAsDataURL(elem[0].files[0]); 
     var filename = elem[0].files[0].name; 

     var extensionlist = filename.split('.'); 
     var extension =extensionlist[extensionlist.length - 1]; 
      if(extensions.indexOf(extension) == -1){ 
       alert("File extension , Only 'jpeg', 'jpg', 'png', 'gif', 'bmp' are allowed.");  

      }else{ 
        scope.file = elem[0].files[0]; 
        scope.imageName = filename; 
       } 
     }); 

      var reader = new FileReader(); 
      reader.onload = function (e) { 

       scope.image = e.target.result; 
       scope.$apply(); 

      } 
     } 
    } 
}]); 

Html:

<div class="input-group"> 
    <input id="image" class="hidden" type="file" img-upload ng-model="imageName" name="imageName"> 
    <img ng-src="{{image}}" height="100" width="100" ng-show="image"/> 
    <label for="image" class="btn btn-success btn-xs pull-center" name="upload" Value="">Upload Photo</label> 
</div> 

Теперь вам нужно добавить код в контроллер, который работает для хранения изображения или файла в базе данных.

+0

работал для меня, спасибо –

0

код, чтобы загрузить изображение в 64 бит в Angularjs

Html код

<div class="col-md-8"> 
    <img ng-src="data:image/png;base64,{{model.Logo}}" id="photo-id" /> 
    <input type="file" name="file" onchange="angular.element(this).scope().uploadFile(this)" id="photo-upload" /> 
</div> 

Угловой код:

$scope.uploadFile = function (input) { 
      if (input.files && input.files[0]) { 
       var reader = new FileReader(); 
       reader.readAsDataURL(input.files[0]); 
       reader.onload = function (e) { 

        $('#photo-id').attr('src', e.target.result);      
        var canvas = document.createElement("canvas"); 
        var imageElement = document.createElement("img"); 

        imageElement.setAttribute = $('<img>', { src: e.target.result }); 
        var context = canvas.getContext("2d"); 
        imageElement.setAttribute.load(function() 
        { 
         debugger; 
         canvas.width = this.width; 
         canvas.height = this.height; 


         context.drawImage(this, 0, 0); 
         var base64Image = canvas.toDataURL("image/png"); 

         var data = base64Image.replace(/^data:image\/\w+;base64,/, ""); 

         $scope.model.Logo = data; 
        }); 



       } 


      } 
     } 

больше перейдите по ссылке: http://vikasbishtangular.blogspot.in/2017/04/code-to-upload-image-in-64-bit-in.html

+0

Подсказка: окно предварительного просмотра существует по какой-то причине. Не помещайте здесь код, который на самом деле не читается (например, те части html, которые у вас есть)! – GhostCat

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