2013-02-20 9 views
16

Wyszukiwanie w bazie danych obrazu jako tablicy bajtów. Chcę pokazać tę zawartość jako plik przy użyciu znacznika image, ale nie działa tutaj.AngularJS - Pokaż zawartość tablicy bajtów jako obrazu

// 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}}" /> 

Masz pomysł? Dziękuję wszystkim!

Odpowiedz

57

Zastosowanie ng-src w następującym formacie

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

Nie zapomnij dodać filtr sanitization dla data aby nie być oznaczony jako unsafe przez kątową danych

$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ftp|blob):|data:image\//);

+0

GET: wizerunek /PNG;base64,etc.net::ERR_INVALID_URL dla mnie – amdev

+0

@Assem, nawet dostaję netto :: ERR_INVALID_URL. Jaki może być problem? – Hema

+0

@amdev, rozwiązałeś to.? – Hema

-1

Atrybut src z img wskazuje na plik źródłowy obrazu, ale nie zawiera faktycznych danych źródłowych. Nie możesz robić tego, co chcesz w ten sposób; zamiast tego trzeba by napisać dekoder obrazu w JavaScript (np. https://github.com/devongovett/png.js), który wysyła do elementu canvas.

2

Jeśli możesz uzyskać serwer do zwrócenia obrazu w zakodowanym łańcuchu base64, możesz użyć atrybutu src jako data url.

Powiązane problemy