преобразовать изображение в base64 в angularjs

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


person user2610160    schedule 13.11.2014    source источник


Ответы (4)


Ответ отсюда https://stackoverflow.com/a/24880314/625189

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

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

var imageData=$base64.encode(image);

Не забудьте ввести в свой модуль:

.module('myApp', ['base64'])
person Jaanus    schedule 13.11.2014
comment
Этот плагин кодирует URL-адрес моего изображения, а не фактическое изображение. - person Nick; 06.08.2016

Вы можете использовать пользовательскую директиву angular для преобразования изображения base64. директива.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>

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

person Bipin Shilpakar    schedule 26.07.2017

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

<img alt="{{p.alt}}" data-ng-src="{{'data:image/png;base64,'+p.Photo}}" class="photo" />
person Carlos Casalicchio    schedule 24.09.2015
comment
Хотя теоретически это не так, это противоположно тому, о чем просит ОП. - person Desmond; 06.05.2017

Код для загрузки 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

person vikas singh    schedule 29.08.2017
comment
Подсказка: это окно предварительного просмотра существует не просто так. Не бросайте сюда код, который на самом деле не читается (например, те html-части, которые у вас есть)! - person GhostCat; 29.08.2017