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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.