2016-05-29 2 views
4

Мне нужно получить файл с помощью $ http.get. Данные возвращаются как application/octet-stream Но я знаю, что этот файл является изображением.Конвертировать октет-поток в изображение

Как я могу отобразить этот файл как изображение?

Я попытался

var nuroImage = new Image(); 
nuroImage.onload = function { 
    scope.imageSrc = this.src; 
} 

$http(req).then(
    funciton(response) { 
    nuroImage.src = "data:application/octet-stream," + response.data 
    } 

Я получаю 200ok, но изображение не показывает

Можно ли преобразовать октет-поток в JPEG/PNG?

+0

Если ответ уже 'данные URI' попробуйте удалить' «данные: приложения/октет-поток» 'на втором примере. Можете ли вы включить первые 15-20 символов возвращенной строки в вопрос? – guest271314

ответ

3

Вы можете использовать XMLHttpRequest() по запросу изображения, как Blob, URL.createObjectURL() создать блоб URL из ответа

var nuroImage = new Image; 
var request = new XMLHttpRequest(); 
request.responseType = "blob"; 
request.onload = function() { 
    nuroImage.src = URL.createObjectURL(this.response) 
} 
request.open("GET", "/path/to/image/file"); 
request.send(); 
2

Я думаю, вы должны что-то вроде этого:

  • Использование atob для кодирования в результате выполнения длины сжатого файла изображения
  • И использовать <img src="data:image/png;base64,...."> включить, что в файл html5

Если ваш файл не является PNG, добавьте соответствующий тип mime.

Образец:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/ 
 
f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67 
 
QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g7 
 
7ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7"/>

Смежные вопросы