19

I'm searching into my database a image as a byte array. I want to show this content as file using the markup image, but it doesn't work here.

// Controller which get my image and put into $scope.
function MyController($scope, $http, $location) {  

    var url = '/json/FindImage?id=1';  
    $http.get(url).success(function(result) {  
        $scope.image = result.Image;  
    }  
}  

// HTML
<!-- It doesn't work -->  
<img src="{{image}}" />  
<!-- It doesn't work also -->  
<img ng-src="{{image}}" />  

Any idea? Thank you all!

4 Answers 4

62

Use ng-src in the following format

<img ng-src="data:image/JPEG;base64,{{image}}">

Don't forget to add a sanitization filter for data to not be marked as unsafe by angular:

$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ftp|blob):|data:image\//);
Sign up to request clarification or add additional context in comments.

6 Comments

GET data:image/PNG;base64,etc.net::ERR_INVALID_URL for me
@Assem , even am getting net::ERR_INVALID_URL. What might be the issue.
@Hema, Yes actually i guess the issue was java side. Now on front side I have <img ng-src="data:image/png;base64,{{myresponsejsonobject.image}}"> and java side I have a ByteArrayOutputStream object which i convert in b64 like that byte[] imageBytes = baos.toByteArray();String b64 = Base64.encodeBase64String(imageBytes);baos.close(); Then put my string in a json.
Hi @Assem-Hafez, where should the sanitisation filer be added?
@CiaranGallagher this should go in your config angular.module('myApp').config(['$compileProvider', function($compileProvider) { $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ftp|blob):|data:image\//); } ]);
|
2

If you can get your server to return the image in a base64 encoded string, you could use a data url as the src attribute.

Comments

0

Make sure The Data you are returning to show as a image is converted to ToBase64String

In your C# code, Use Convert.ToBase64String(imageBytes) and in the view use this

Comments

-1

The src attribute of img points to the source file of the image, it doesn't contain the actual source data. You can't do what you want this way; instead, you would have to write an image decoder in JavaScript (e.g., https://github.com/devongovett/png.js), which outputs into a canvas element.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.