C#webapi接口返回图片内存流,页面用ajax获取给img

本文介绍了一种在API接口中将内存中的图片流转换为Base64字符串的方法,用于前端直接显示图片。通过具体代码示例,展示了如何生成微信支付所需的二维码,并将其转化为可在网页上展示的Base64格式图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过多方搜索,图片可以用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);
            });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值