经过多方搜索,图片可以用base64这种方式显示(如下代码),所以可以在api接口中把内存流转换base64的字符串
document.getElementById('img').setAttribute( 'src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0 DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' );
api接口控制器,我这里做的是微信扫码支付的二维码,
[HttpGet]
public IHttpActionResult WXPay(int order_id)
{
NativePay nativePay = new NativePay();
string result = nativePay.GetPayUrl(order_id);
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
qrCodeEncoder.QRCodeVersion = 0;
qrCodeEncoder.QRCodeScale = 4;
//将字符串生成二维码图片
Bitmap image = qrCodeEncoder.Encode(result, Encoding.Default);
//保存为PNG到内存流
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Png);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
return Json( ApiResult.Success( Convert.ToBase64String(arr)));
}
然后页面获取渲染,ajax我这里是封装了一下,你们自己写就好了,重点是data:image/png;base64
// 测试微信支付接口
$.mycore.httpAjax.get($.mycore.apiUrl.WXPay,
{ order_id: id },
function (res) {
var img = res.Message;
$("#pay_img").attr("src", "data:image/png;base64,"+img);
});