我有一个问题,当我调用我的API来获取图像时,我得到二进制图像。我想是的......
ImageConverter imageConverter = new ImageConverter();
byte[] resourceByteArray = (byte[])imageConverter.ConvertTo(_Obj.GetImage(), typeof(byte[]));
MemoryStream dataStream = new MemoryStream(resourceByteArray);
response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(dataStream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/" + parameters.ImageFormat);
前端代码。
$("#formoid").submit(function (event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $(this),
url = $form.attr('action');
/* Send the data using post */
var posting = $(this).serialize();
$.ajax({
type: "POST",
url: url,
data: posting
}).done(function (data) {
$('#output').html('<img src="data:image/PNG;base64' + data + '" />');
});
});
最终结果是:
<img src="data:image/PNG;base64�PNG
���
IHDR�����@��������sRGB�������gAMA�����a��� pHYs�������o�d����IDATx^���W��}�}��s�{�s���g�t��epww��N ��I � �@�@�]�'F���o���ݫv�������<�g�k������Uk��k���P��+��eˢT�R��`��%J�p�¾��\��`pGƪ\k0\i��!%0���`�
答案 0 :(得分:3)
为了使用<img src="data:image/PNG;base64'
,base64
部分是因为您需要返回Base64
字符串而不是字节数组,因此您需要将byte[]
转换为64Base使用:Convert.ToBase64String(buffer)
所以使用你的代码作为例子:
ImageConverter imageConverter = new ImageConverter();
byte[] resourceByteArray = (byte[])imageConverter.ConvertTo(_Obj.GetImage(), typeof(byte[]));
您的WebApi方法应该返回:
return Convert.ToBase64String(resourceByteArray);
答案 1 :(得分:0)
我对asp和.NET的了解不多,但你应该在使用Convert.ToBase64String方法之前在文本中转换二进制数组,然后再将其作为回应。