高校手机签到系统——zxing.net生成二维码(补充)

  高校手机签到系统——第一部分Authority权限系统(上)

  高校手机签到系统——第一部分Authority权限系统(下)

  高校手机签到系统——手机客户端

  关于zxing.net的使用网上已有很多说明,可是在mvc模式下,怎么保存生成的图片返回链接?

使用zxing生成bitmap:

1
2
3
4
5
6
7
8
9
10
11
BarcodeWriter writer = new BarcodeWriter
            {
                Format = BarcodeFormat.QR_CODE,
                Options = new EncodingOptions
                    {
                        Width = 400,
                        Height = 400
                    }
            };
            string time = DateTime.Now.ToString();
            Bitmap bitmap = writer.Write(id + "|" + time);

 此bitmap有一save方法Image.Save (String, ImageCodecInfo, EncoderParameters),参数分别是路径,编码器,以及编码器参数。

初始化编码器ImageCodecInfo imageCodecInfo = (from e in ImageCodecInfo.GetImageEncoders() where e.MimeType == "image/jpeg" select e).First();

初始化编码器参数EncoderParameters encoderParameters = new EncoderParameters(1);
            EncoderParameter encoderParameter = new EncoderParameter(Encoder.Quality, 75L);

接下来保存到相应的路径即可。完整的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public ActionResult LoadQrcode(string id)
        {
            BarcodeWriter writer = new BarcodeWriter
            {
                Format = BarcodeFormat.QR_CODE,
                Options = new EncodingOptions
                    {
                        Width = 400,
                        Height = 400
                    }
            };
            string time = DateTime.Now.ToString();
            Bitmap bitmap = writer.Write(id + "|" + time);
            ImageCodecInfo imageCodecInfo = (from e in ImageCodecInfo.GetImageEncoders() where e.MimeType == "image/jpeg" select e).First();
            EncoderParameters encoderParameters = new EncoderParameters(1);
            EncoderParameter encoderParameter = new EncoderParameter(Encoder.Quality, 75L);
            encoderParameters.Param[0] = encoderParameter;
            if (Directory.Exists(Server.MapPath("/Images/" + id + "/")))
            {
                FileInfo[] files = new DirectoryInfo(Server.MapPath("/Images/" + id + "/")).GetFiles();
                foreach (FileInfo fi in files)
                    System.IO.File.Delete(Path.Combine(Server.MapPath("/Images/" + id + "/"), fi.Name));
            }
            else
                Directory.CreateDirectory(Server.MapPath("/Images/" + id + "/"));
            bitmap.Save(Path.Combine(Server.MapPath("/Images/" + id + "/"), DateTime.Now.Date.ToFileTimeUtc()+ ".jpeg"), imageCodecInfo, encoderParameters);
            return Json("/Images/" + id + "/" + DateTime.Now.Date.ToFileTimeUtc() + ".jpeg", JsonRequestBehavior.AllowGet);
        }

 

 

posted @   Scott Lewis  阅读(1382)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示