我想在IIS上托管的MVC Web App中实现Barcode,用于Super Store。经过3天的研究后,我在谷歌上找到了一个例子,但这不是在MVC中。请告诉我如何在MVC中实现此代码,所以当我在视图中传递字符串条形码图像时
public void CreateBarcode(string code)
{
var myBitmap = new Bitmap(500, 50);
var g = Graphics.FromImage(myBitmap);
var jgpEncoder = GetEncoder(ImageFormat.Jpeg);
g.Clear(Color.White);
var strFormat = new StringFormat { Alignment = StringAlignment.Center };
g.DrawString(code, new Font("Free 3 of 9", 50), Brushes.Black, new RectangleF(0, 0, 500, 50), strFormat);
var myEncoder = System.Drawing.Imaging.Encoder.Quality;
var myEncoderParameters = new EncoderParameters(1);
var myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save(@"E:\Barcode.jpg", jgpEncoder, myEncoderParameters);
}
public ImageCodecInfo GetEncoder(ImageFormat format)
{
var codecs = ImageCodecInfo.GetImageDecoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
看起来你知道如何制作条形码,并且需要知道如何从控制器到你的页面。这里有一些代码可以帮助您将它们放在一起。
在你的页面中
<img src="@Url.Action("Barcode", new { code = "*ABC123*" })" alt="" />
在你的控制器中
public ActionResult Barcode(string code)
{
var myBitmap = new Bitmap(500, 50);
var g = Graphics.FromImage(myBitmap);
// the code that makes the barcode
// the code that makes the barcode
// the code that makes the barcode
// Put the image into a stream to return
MemoryStream ms = new MemoryStream();
myBitmap.Save(ms, ImageFormat.Png);
// Reset the stream position before returning it
ms.Position = 0;
return new FileStreamResult(ms, "image/png");
}