在MVC中实现条形码

问题描述 投票:-2回答:1

我想在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;
        }
c# model-view-controller barcode
1个回答
0
投票

看起来你知道如何制作条形码,并且需要知道如何从控制器到你的页面。这里有一些代码可以帮助您将它们放在一起。

在你的页面中

<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");
}
© www.soinside.com 2019 - 2024. All rights reserved.