asp服务器端打印_从ASP.NET服务器端将两个图像合成为一个

asp服务器端打印

asp服务器端打印

Today I had a system that was sending me two base64'ed images in an XML response. The images were of the front and back image of a check. However, the requirement is to show a single composite check image at the browser with the front image stacked on top of the back image.  Of course, it's got to be secure so no temp files, blah blah.

今天,我有一个系统,该系统通过XML响应向我发送了两个基于base64的图像。 这些图像是支票的正面和背面图像。 但是,要求是在浏览器上显示单个复合支票图像,并且正面图像堆叠在背面图像的顶部。 当然,它必须是安全的,所以没有临时文件,等等。

Here's the solution, done as an HttpHandler, so something like <img src="checkimage.ashx?whatever=4&something=6">

这是作为HttpHandler完成的解决方案,因此类似<img src =“ checkimage.ashx?whatever = 4&something = 6”>

public class SomeCheckImageHandler : IHttpHandler

公共类SomeCheckImageHandler:IHttpHandler

{

{

    //some stuff snipped

//一些东西被剪掉

    public SomeCheckImageHandler(){}

公共SomeCheckImageHandler(){}

    public void ProcessRequest(HttpContext context)

公共无效ProcessRequest(HttpContext上下文)

    {

{

        context.Response.ContentType = "image/jpg";   

context.Response.ContentType =“ image / jpg”;

        //some stuff snipped

//一些东西被剪掉

        GetCheckImageRequest req = new GetCheckImageRequest();

GetCheckImageRequest req =新的GetCheckImageRequest();

        //some stuff snipped, get the params from the QueryString

//一些内容被删除,从QueryString中获取参数

        GetCheckImageResponse res = banking.GetCheckImage(req);

GetCheckImageResponse res =银行业务.GetCheckImage(req);

        //some stuff snipped

//一些东西被剪掉

        if (res.ImageBack != null)

如果(res.ImageBack!= null)

        {

{

            //merge them into one image

//将它们合并为一张图像

            using(MemoryStream m = new MemoryStream(res.BackImageBytes))

使用(MemoryStream m = new MemoryStream(res.BackImageBytes))

            using(Image backImage = System.Drawing.Image.FromStream(m))

使用(Image backImage = System.Drawing.Image.FromStream(m))

            using(MemoryStream m2 = new MemoryStream(res.BrontImageBytes))

使用(MemoryStream m2 = new MemoryStream(res.BrontImageBytes))

            using(Image frontImage = System.Drawing.Image.FromStream(m2))

使用(Image frontImage = System.Drawing.Image.FromStream(m2))

            using(Bitmap compositeImage = new Bitmap(frontImage.Width,frontImage.Height+backImage.Height))

使用(位图CompositeImage =新的位图(frontImage.Width,frontImage.Height + backImage.Height))

            using(Graphics compositeGraphics = Graphics.FromImage(compositeImage))

使用(Graphics CompositeGraphics = Graphics.FromImage(compositeImage))

            {

{

                compositeGraphics.CompositingMode = CompositingMode.SourceCopy;

CompositeGraphics.CompositingMode = CompositingMode.SourceCopy;

                compositeGraphics.DrawImageUnscaled(frontImage,0,0);

CompositeGraphics.DrawImageUnscaled(frontImage,0,0);

                compositeGraphics.DrawImageUnscaled(backImage,0,frontImage.Height);

CompositeGraphics.DrawImageUnscaled(backImage,0,frontImage.Height);

                compositeImage.Save(context.Response.OutputStream, ImageFormat.Jpeg);

CompositeImage.Save(context.Response.OutputStream,ImageFormat.Jpeg);

            }

}

        }

}

        else //just show the front, we've got no back

否则//只显示正面,我们没有背面

        {

{

            using(MemoryStream m = new MemoryStream(frontImageBytes))

使用(MemoryStream m = new MemoryStream(frontImageBytes))

            using(Image image = System.Drawing.Image.FromStream(m))

使用(Image image = System.Drawing.Image.FromStream(m))

            {

{

                image.Save(context.Response.OutputStream, ImageFormat.Jpeg);

image.Save(context.Response.OutputStream,ImageFormat.Jpeg);

            }

}

        }

}

    }

}

}

}

I love it when .NET makes things this easy.

当.NET使事情变得如此轻松时,我喜欢它。

翻译自: https://www.hanselman.com/blog/compositing-two-images-into-one-from-the-aspnet-server-side

asp服务器端打印

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值