在项目中需要使用到截取支付宝的付款码,话不多说直接看图片
这里需要提取中间的付款码,听在下面加文字,当然这里的图片上的付款码换成了其他的二维码,换我自己二维码也没有人转账给我,还是不要暴露自己为好
就是这么个需求, 下面开始撸码
html部分
<form action="Handler.ashx" method="post" enctype="multipart/form-data">
请选择文件:
<input type="file" name="file1" value="" />
<input type="submit" value="上传" />
</form>
后端代码cs文件
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Drawing;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string strmsg = "支付宝文字";
if (context.Request.Files.Count > 0)
{
//1.接受用户上传的文件
HttpPostedFile file = context.Request.Files[0];
//判断文件后缀名 文件的ContentType是不是image开头的
//file.FileName,file.ContentType="image"
//2.根据用户上传的文件创建一个image对象,这个对象是用户上传的原图的对象
using (Image imgbig = Image.FromStream(file.InputStream))
{
//3.再创建一个小图片(image对象),这个是一个缩略图
using (Image imgSmall = new Bitmap(1068, 1168)) //生成文件的大小
{
//4.基于小图片,创建一个“画布”
using (Graphics g = Graphics.FromImage(imgSmall))
{
//清除整个绘图面并以透明背景色填充
g.Clear(Color.White);
//5.把大图“画”到小图片上
//g.DrawImage(imgbig, 756, 1318, 968, 968);
Rectangle destRect = new Rectangle(50, 50, 968, 968);//显示图像的位置 50是白色边框 968是二维码大小
Rectangle srcRect = new Rectangle(756, 1318, 968, 968);//显示图像那一部分
GraphicsUnit units = GraphicsUnit.Pixel;//源矩形的度量单位设置为像素
g.DrawImage(imgbig, destRect, srcRect, units);
Font fromat = new Font("宋体", 30);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;//水平对其
SizeF size = g.MeasureString(strmsg, fromat); // MeasureText(strmsg, new Font("宋体", 30));
float X = (1068- size.Width) / 2;
g.DrawString(strmsg, fromat, Brushes.Black, X, 1028);
}
//6.保持大图片,保持小图片
string GuidName = Guid.NewGuid().ToString();
imgbig.Save(context.Request.MapPath("imges/" + GuidName + "大图" + ".jpg"));
imgSmall.Save(context.Request.MapPath("imges/" + GuidName + "小图" + ".jpg"));
context.Response.Write("ok!");
}
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
http://download.csdn.net/detail/qq_27559331/9825824