MVC 返回图片
//调用 http://localhost:60663/home/GetCoder39Img?mycode=123443545
public void GetCoder39Img(string mycode)
{
//string str= Request.QueryString.ToString ();
Response.ContentType = "image/jpeg";
string codeStr;
string c;
//codeStr = "*-%$*"
codeStr = "*" + mycode + "*"; //Code 39 的特性是前、後置碼會標識「星號(*)」,表示開始和結束
int bmpHeight = 35;
int bmpWidth = 0;
int _x = 0;
int _y = 20;
//int 筆寬 = 0;
if (!string.IsNullOrEmpty(mycode))
{
bmpWidth = codeStr.Length * 13;
Bitmap BMP = new Bitmap(bmpWidth, bmpHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics G = Graphics.FromImage(BMP);
G.TextRenderingHint = TextRenderingHint.AntiAlias;
G.Clear(Color.White);
Brush brush = new SolidBrush(Color.White);
G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
G.FillRectangle(brush, 0, 0, bmpWidth, bmpHeight);
for (int i = 0; i < codeStr.Length; i++)
{
//取得 Code 39 碼的規則
c = this.genBarcode(codeStr.Substring(i, 1).ToUpper());
for (int j = 0; j < 4; j++)
{
if (c.Substring(j, 1).Equals("0"))
{
G.DrawLine(Pens.Black, _x, 0, _x, _y);
}
else
{
G.DrawLine(Pens.Black, _x, 0, _x, _y);
G.DrawLine(Pens.Black, _x + 1, 0, _x + 1, _y);
_x += 1;
}
_x += 1;
if (c.Substring(j + 5, 1).Equals("0"))
{
G.DrawLine(Pens.White, _x, 0, _x, _y);
}
else
{
G.DrawLine(Pens.White, _x, 0, _x, _y);
G.DrawLine(Pens.White, _x + 1, 0, _x + 1, _y);
_x += 1;
}
_x += 1;
} //end of loop
if (c.Substring(4, 1).Equals("0"))
{
G.DrawLine(Pens.Black, _x, 0, _x, _y);
}
else
{
G.DrawLine(Pens.Black, _x, 0, _x, _y);
G.DrawLine(Pens.Black, _x + 1, 0, _x + 1, _y);
_x += 1;
}
_x += 2;
} //end of loop
int x = 0;
int addx = 13;
G.DrawString("-", new Font("Arial", 10, FontStyle.Italic), SystemBrushes.WindowText, new PointF(x, 20));
x += addx;
for (int k = 0; k < mycode.Length; k++)
{
G.DrawString(mycode.Substring(k, 1), new Font("Arial", 10, FontStyle.Italic), SystemBrushes.WindowText, new PointF(x, 20));
x = x + addx;
}
G.DrawString("-", new Font("Arial", 10, FontStyle.Italic), SystemBrushes.WindowText, new PointF(x, 20));
BMP.Save(Response.OutputStream, ImageFormat.Jpeg);
G.Dispose();
BMP.Dispose();
}
}
/// <summary>
/// Code 39 碼的規則。
/// Code 39 碼可使用的c如下:0~9、A~Z、+、-、*、/、%、$、. 及空白c。
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public string genBarcode(string code)
{
switch (code)
{
case "0":
code = "001100100";
break;
case "1":
code = "100010100";
break;
case "2":
code = "010010100";
break;
case "3":
code = "110000100";
break;
case "4":
code = "001010100";
break;
case "5":
code = "101000100";
break;
case "6":
code = "011000100";
break;
case "7":
code = "000110100";
break;
case "8":
code = "100100100";
break;
case "9":
code = "010100100";
break;
case "A":
code = "100010010";
break;
case "B":
code = "010010010";
break;
case "C":
code = "110000010";
break;
case "D":
code = "001010010";
break;
case "E":
code = "101000010";
break;
case "F":
code = "011000010";
break;
case "G":
code = "000110010";
break;
case "H":
code = "100100010";
break;
case "I":
code = "010100010";
break;
case "J":
code = "001100010";
break;
case "K":
code = "100010001";
break;
case "L":
code = "010010001";
break;
case "M":
code = "110000001";
break;
case "N":
code = "001010001";
break;
case "O":
code = "101000001";
break;
case "P":
code = "011000001";
break;
case "Q":
code = "000110001";
break;
case "R":
code = "100100001";
break;
case "S":
code = "010100001";
break;
case "T":
code = "001100001";
break;
case "U":
code = "100011000";
break;
case "V":
code = "010011000";
break;
case "W":
code = "110001000";
break;
case "X":
code = "001011000";
break;
case "Y":
code = "101001000";
break;
case "Z":
code = "011001000";
break;
case "*":
code = "001101000";
break;
case "-":
code = "000111000"; //好像辨識不出來
break;
case "%":
code = "100101000"; //好像辨識不出來
break;
case "$":
code = "010101000"; //好像辨識不出來
break;
default:
code = "010101000"; //都不是就印 $
break;
}
return code;
}
MVC 返回图片的更多相关文章
- MVC返回图片
这几天忙着一些小事,也没有写什么了,今天,我们来玩一个比较简单的东东.就是在MVC下如何返回图片,相信,在传统WebForm下,大家都晓得怎么弄,方也不限于一种,但是,在架构较为严格的MVC里面,刚开 ...
- springBoot优雅返回图片/网页到浏览器
一.普通spring mvc返回图片或网页到浏览器 @Controller @RequestMapping(value = "/image") public class Image ...
- ASP.NET误人子弟教程:在MVC下如何返回图片
这几天忙着一些小事,也没有写什么了,今天,我们来玩一个比较简单的东东.就是在MVC下如何返回图片,相信,在传统WebForm下,大家都晓得怎么弄,方也不限于一种,但是,在架构较为严格的MVC里面,刚开 ...
- ASP.NET MVC下如何返回图片
方式一: 首先,我们应当从控制器入手,控制器一般不都是return View的吗?那怎么返回图片? 当然,Controller类也没有return Image 的,上次我们的例子是返回JSON,其实我 ...
- MVC 返回404,返回图片,流到数组,apk信息
return HttpNotFound(); byte[] buffer0 = QRCode(); return File(buffer0, @"image/jpeg"); // ...
- spring mvc返回json字符串的方式
spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json 优点:不需要自己再处理 步骤一:在spring- ...
- mvc 返回值
mvc返回值为Model类型 public ActionResult Index(T result) { return View(result); } view中的对象即为页面中的Model数据,之后 ...
- mvc 返回 xml
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable
1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...
随机推荐
- 推荐一款开源的C#TCP通讯框架
原来收费的TCP通讯框架开源了,这是一款国外的开源TCP通信框架,使用了一段时间,感觉不错,介绍给大家 框架名称是networkcomms 作者开发了5年多,目前已经停止开发,对于中小型的应用场景,够 ...
- wireshark添加ip.id字段
wireshark添加ip.id字段 为了在多个设备上追踪同一个数据包. 如果是同一个会话,则可以计算延迟, 如sta和应用服务器慢,这种问题,可以根据这个加上ip.id追踪数据到哪里慢了.
- dxut.h(29): fatal error C1083: Cannot open include file: 'dxsdkver.h': No such file or directory
从网上download一个三维演示模型的软件编译发现报找不到dxsdkver.h文件,网上查阅这是MS的DirectX sdk中的库文件,于是先download DirectX SDK 安装之后,配置 ...
- 备份U盘分区表,未雨绸缪
有时候,由于操作不当将U盘或者移动硬盘插入到电脑的时候会变成RAW格式,不可读取,这样的话就杯具了,只能用恢复软件试试看. 但是,如果一开始进行了备份的话,处理起来就简单多了. 用winhex打开U盘 ...
- 怎样写 OpenStack Neutron 的 Extension (一)
前两篇文章讨论了怎么写一个 Neutron 的插件.但是最基本的插件只包括 Network, Port,和 Subnet 三种资源.如果需要引入新的资源,比如一个二层的 gateway 的话,就需要在 ...
- Sublime Text 3使用参考手册
什么是Sublime Text? Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器.Sublime Text是 ...
- [wikioi 1034][CTSC 1999]家园(网络流)
由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177年冬由于未知的原因,地球环境发生了连锁崩溃,人类必须 ...
- 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]
本次给大家带来的EasyUI的我研究拓展的新特性 我使用的是 EasyUI 1.3.2版本的,项目是ASP.NET MVC3,但是本篇讲解用不上ASP.NET MVC,仅仅修改官方Demo你就知道怎 ...
- JavaScript基础---Cookie
内容提纲: 1.cookie 2.cookie局限性 3.其他存储 发文不易,转载请注明出处链接,谢谢! 随着Web越来越复杂,开发者急切的需要能够本地化存储的脚本功能.这个时候,第一个出现的方案:c ...
- 第七章:Javascript数组
数组是值的有序结合.每个值叫做一个元素,而每个元素在数组中都有一个位置,用数字表示,称为索引. javascript数组是无类型的:数组的元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类 ...