Ali Hamza
Ali Hamza

Reputation: 21

How to convert image from Base64String to byte[] array in angularJs

I am trying to convert image into byte array. Here is my code which returns base64String of that image:

 $scope.imageAdded = function (files) {
        angular.forEach(files,
            function (flowFile, i) {
                var fileReader = new FileReader();
                fileReader.onload = function (event) {
                    var uri = event.target.result;
                    $scope.imageStrings[i] = uri;
                };
                fileReader.readAsDataURL(flowFile.file);
                event.preventDefault(); //prevent file from uploading
            });
    }

Any kind of help will be appreciated

Upvotes: 1

Views: 534

Answers (2)

Endless
Endless

Reputation: 37855

$scope.imageAdded = async function imageAdded (flowFiles) {
    const arrayBuffer = await flowFiles[0].file.arrayBuffer()
    const uint8array = new Uint8Array(arrayBuffer)
}

Upvotes: 1

Tom
Tom

Reputation: 193

Try this

 $scope.base64toByteArray = function(b64Data, contentType = '', sliceSize = 512) => {
        const byteCharacters = atob(b64Data);
        const byteArrays = [];
    
        for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
          const slice = byteCharacters.slice(offset, offset + sliceSize);
    
          const byteNumbers = new Array(slice.length);
          for (let i = 0; i < slice.length; i++) {
            byteNumbers[i] = slice.charCodeAt(i);
          }
    
          const byteArray = new Uint8Array(byteNumbers);
          byteArrays.push(byteArray);
        } 
        return byteArrays;
      }

Upvotes: 1

Related Questions