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;
}

时间: 2024-08-04 22:22:19

MVC 返回图片的相关文章

MVC返回图片

这几天忙着一些小事,也没有写什么了,今天,我们来玩一个比较简单的东东.就是在MVC下如何返回图片,相信,在传统WebForm下,大家都晓得怎么弄,方也不限于一种,但是,在架构较为严格的MVC里面,刚开始接触的朋友,可能不太清楚如何实现. 首先,我们应当从控制器入手,昨天有位朋友问我,控制器一般不都是return View的吗?那怎么返回图片? 当然,Controller类也没有return Image 的,上次我们的例子是返回JSON,其实我们可以让其返回一个文件流,一开始我也想过使用ViewD

MVC控制器向前端返回图片

前端请求代码 @{ ViewBag.Title = "View1";} <h2>返回图片</h2> <hr/><img src="/Home/Returnimg"> 后端返回图片代码 public ActionResult Returnimg() { Bitmap bmp = new Bitmap(100, 100); Graphics g = Graphics.FromImage(bmp); g.Clear(Colo

mvc 返回值

mvc返回值为Model类型 public ActionResult Index(T result) { return View(result); } view中的对象即为页面中的Model数据,之后 在页面上把Model 转成对应的类型即可.如 Model as T 注:T为类型

基于spring mvc的图片验证码实现

基于spring mvc的图片验证码实现 标签: springmvcspring mvc验证码验证码验证 2016-01-28 10:49 8015人阅读 评论(4) 收藏 举报  分类: 表单处理 版权声明:本文为博主原创文章,未经博主允许不得转载. 本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) public void getAuthCode(HttpServ

spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(value = { "/actor_details" }, method = { RequestMethod.POST }) @ResponseBody public ResultObject actorDetails(@RequestBody ActorDetailsRequest req)

coco2dx jni 调用 java 相机返回 图片数据

新建 一个项目 名字:testJin  包名:com.TanSon.org  python命令:python create_project.py -project testJin -package com.TanSon.org -language cpp eclipse 导入项目配置 ... 略去,(可以google) 1 c++ 调用 andriod 1.1 包含头文件 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include <jni.

MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件02-多文件上传

上一篇中,使用客户端jJSAjaxFileUploader插件实现单文件异步上传,本篇实现多文件异步上传. 本篇源码在github,先看效果: ● 上传文件显示进度条. ● 停止上传按钮和关闭缩略图按钮. ● 限制上传文件的类型. ● 限制上传文件的尺寸. ●同时上传多个文件成功后显示缩略图.文件名: ● 点击界面上的删除按钮,界面删除,同步删除文件夹中文件. ● 再点击上传文件,界面追加一行新的缩略图.文件名.删除按钮: □ HomeController 把上传的文件名改成以GUID命名的格式

spring mvc返回json字符串的方式

spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json            优点:不需要自己再处理 步骤一:在spring-servlet.xml文件中配置如下代码 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans&quo

Spring MVC 返回类型为字符串时, 返回中文变成&quot;?&quot;处理

Spring MVC 返回类型为字符串时, 返回中文变成"?"处理 Spring controller 如下 @Controller public class SimpleController { @ResponseBody @RequestMapping(value = "/hotel") public String hotel() { return "{\"status\":0,\"errmsg\":null,\