• 使用ASP.NET上传图片并生成缩略图


    就是一个简单的将图片上传到服务器,并按照需求生成缩略图。在上传图片较大的时候,可以生成一个较小的图片放在网页里,这样可以加快浏览的速度。可根据需要链接到大图片再仔细浏览。

    不是很复杂,大概写一下。目的只在于实现,未仔细按照标准什么的来写。其中参考了网上已经存在的代码。

    using System.Drawing;

    页面,如图:


    点击提交按钮:

    H

    ttpPostedFile hpf = UploadImage.PostedFile;
    //取得文件名(不含路径)
    string Filename = Path.GetFileName(hpf.FileName);//原文修改
    if (hpf.FileName.Length < 1)
    {
    Response.Write("请选择您要上传的图片文件");
    return;
    }
    if (hpf.ContentType != "image/jpeg" && hpf.ContentType != "image/gif")//原文修改
    {
    Response.Write("只允许上传 GIF JPG类型的文件");
    return;
    }
    else
    {
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append(DateTime.Now.Year.ToString());
    sb.Append(DateTime.Now.Month.ToString());
    sb.Append(DateTime.Now.Day.ToString());
    sb.Append(DateTime.Now.Hour.ToString());
    sb.Append(DateTime.Now.Minute.ToString());
    sb.Append(DateTime.Now.Second.ToString());
    if (Filename.ToLower().EndsWith("gif"))
    {
    sb.Append(".gif");
    }
    else if (Filename.ToLower().EndsWith("jpg"))
    {
    sb.Append(".jpg");
    }
    else if (Filename.ToLower().EndsWith("jpeg"))
    {
    sb.Append(".jpeg");
    }
    Filename = sb.ToString();
    }

    // 保存图片到服务器上
    try
    {
    hpf.SaveAs(Server.MapPath("Album\\") + Filename);//自己修改!
    }
    catch (Exception ee)
    {
    Response.Write("上传图片失败,原因" + ee.Message);
    return;
    }

    // 生成缩略图
    //原始图片名称
    string originalFilename = hpf.FileName;
    //生成的高质量图片名称
    string strFile = Server.MapPath("Album\\Small_")+ Filename;

    //从文件取得图片对象
    System.Drawing.Image image = System.Drawing.Image.FromStream(hpf.InputStream, true);

    Double Width = Double.Parse(TextBox1.Text.Trim());
    Double Height = Double.Parse(TextBox2.Text.Trim());
    System.Double NewWidth, NewHeight;

    if (image.Width > image.Height)
    {
    NewWidth = Width;
    NewHeight = image.Height * (NewWidth / image.Width);
    }
    else
    {
    NewHeight = Height;
    NewWidth = (NewHeight / image.Height) * image.Width;
    }

    if (NewWidth > Width)
    {
    NewWidth = Width;
    }
    if (NewHeight > Height)
    {
    NewHeight = Height;
    }

    System.Drawing.Size size = new Size((int)NewWidth, (int)NewHeight); // 图片大小
    System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width, size.Height); //新建bmp图片
    System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap); //新建画板
    graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量插值法
    graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //设置高质量,低速度呈现平滑程度
    graphics.Clear(Color.White); //清空画布
    //在指定位置画图
    graphics.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
    new System.Drawing.Rectangle(0, 0, image.Width, image.Height),
    System.Drawing.GraphicsUnit.Pixel);

    //文字水印
    System.Drawing.Graphics textGraphics = System.Drawing.Graphics.FromImage(bitmap);
    System.Drawing.Font font = new Font("宋体", 10);
    System.Drawing.Brush brush = new SolidBrush(Color.Black);
    textGraphics.DrawString(TextBox3.Text.Trim(), font, brush, 10, 10);
    textGraphics.Dispose();


    ///图片水印
    //System.Drawing.Image copyImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("pic/1.gif"));
    //Graphics a = Graphics.FromImage(bitmap);
    //a.DrawImage(copyImage, new Rectangle(bitmap.Width-copyImage.Width,bitmap.Height-copyImage.Height,copyImage.Width, copyImage.Height),0,0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);


    //copyImage.Dispose();
    //a.Dispose();
    //copyImage.Dispose();


    //保存缩略图
    try
    {
    bitmap.Save(strFile, System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    catch (Exception ex)
    {
    Response.Write("保存缩略图失败:" + ex.Message);
    }

    graphics.Dispose();
    image.Dispose();
    bitmap.Dispose();


    整个实现的过程如下面的图:

    浏览页面,选择图片:


    点击提交后,图片以及缩略图都已经生成到了目标文件夹里面:


    可以看到,缩略图里面文字水印已经生成:


    至此,整个功能已实现。

    在生成缩略图的时候,可以根据需要对图片以及水印进行处理。更多帮助,请参阅MSDN

    转自:http://blog.csdn.net/cqfeng

    作者:BuildNewApp
    出处:http://syxchina.cnblogs.comBuildNewApp.com
    本文版权归作者、博客园和百度空间共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则作者会诅咒你的。
    如果您阅读了我的文章并觉得有价值请点击此处,谢谢您的肯定1。
  • 相关阅读:
    项目范围管理定义范围
    项目时间管理估算活动资源
    项目时间管理排列活动顺序
    强悍!ultraEdit的文本比较
    网页刷流量软件开发中的困惑
    关于淘宝CSV格式的研究
    HTTP session登陆处理与登陆保持
    用ps将自己的图片字节数变最小
    通过TApplicationEvents响应消息
    有的女人就像易语言
  • 原文地址:https://www.cnblogs.com/syxchina/p/2197349.html
Copyright © 2020-2023  润新知