首页 > asp.net中如何用Image显示Bitmap

asp.net中如何用Image显示Bitmap

在asp.net中使用ThoughtWorks.QRCode出现问题,生成的图片发送前台不能显示。

        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
        qrCodeEncoder.QRCodeScale = 4;
        qrCodeEncoder.QRCodeVersion = 7;
        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
        Bitmap img = qrCodeEncoder.Encode("123456");
        MemoryStream ms = new MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        context.Response.ClearContent();
        context.Response.ContentType = "image/Gif";
        context.Response.Write(ms.ToArray());
        context.Response.End();

我想应该和验证码生成一样的才对,用一个image控件引入生成页面链接,但是窝的就是显示不粗来,是哪里出错了?表示生成的图片用windowsform的控件查看是显示正常的说。。。。


        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
        qrCodeEncoder.QRCodeScale = 4;
        qrCodeEncoder.QRCodeVersion = 7;
        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
        Bitmap img = qrCodeEncoder.Encode("123456");
        MemoryStream ms = new MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        context.Response.ClearContent();
        context.Response.ContentType = "image/Gif";
        context.Response.BinaryWrite(ms.ToArray());//这里的Write改成BinaryWrite即可
        context.Response.End();

把图片格式改了就正常了。。。


    /// <summary>  
/// 含有QR码的描述类和包装编码和渲染  
/// </summary>  
public static class QRCodeHelper
{
    /// <summary>  
    /// 获取二维码  
    /// </summary>  
    /// <param name="ms">输出流</param>  
    /// <param name="strContent">待编码的字符</param>  
    ///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns>  
    public static bool GetQRCode(MemoryStream ms, string strContent, int size)
    {
        ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //误差校正水平   
        string Content = strContent;//待编码内容  
        QuietZoneModules QuietZones = QuietZoneModules.Two;  //空白区域    
        var encoder = new QrEncoder(Ecl);
        QrCode qr;
        if (encoder.TryEncode(Content, out qr))//对内容进行编码,并保存生成的矩阵  
        {
            var render = new GraphicsRenderer(new FixedModuleSize(size, QuietZones));
            render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);
        }
        else
        {
            return false;
        }
        return true;
    }
}

    public void ProcessRequest(HttpContext context)
    {
        var str = context.Request.Params["s"];
        var size = context.Request.Params["size"].ToInt(12);

        using (var ms = new MemoryStream())
        {
            QRCodeHelper.GetQRCode(ms, str, size);
            context.Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length);
        }
        context.Response.ContentType = "image/png";
        context.Response.End();
    }
【热门文章】
【热门文章】