• 上传图片 并生成缩略图的 例子 C#.net



    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Drawing;
    //using System.IO;
    public partial class Adi_Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        SqlConnection conn = new SqlConnection("server=.;database=aspnetdb;uid=sa;pwd=qwe2323478");
       SqlCommand Mycomm = new SqlCommand();
        protected void Dupload_Click(object sender, EventArgs e)
        {
            Boolean fileup=false;
            string path = Server.MapPath("~/modules/dtimage/");
            string filegeshi=System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
            string[] allowgeshi ={ ".jpg", ".gif", ".jpge", ".png" };
            if (FileUpload1 .HasFile)
            {
                for (int i = 0; i < allowgeshi.Length; i++)
                {
                    if (filegeshi == allowgeshi[i])
                    {
                        fileup = true;
                    }
                }
            }
            if(fileup==true)
            {
             try
             {       
             FileUpload upfile = FileUpload1;
             System.IO.Stream Filestream = upfile.FileContent;

             //调用Doit函数生成缩略图并放在另一个文件夹里。
             Doit(Filestream,Server.MapPath("../modules/image/"+FileUpload1.FileName));
             FileUpload1.SaveAs(path + FileUpload1.FileName);
             MsgD.Text="上传成功";
             }
             catch(Exception ex)
             {
                MsgD.Text="发生错误!";  
             }
            }
            else
            {
              MsgD.Text="不能上传这种格式!";
            }
        }
        public bool Doit(System.IO.Stream stream, string savepath)
        {
            System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
            int img_w = Convert.ToInt32(img.Width);
            int imgx_h = Convert.ToInt32(img.Height);
            System.Drawing.Bitmap simage = new System.Drawing.Bitmap(150, 150);
            Graphics g = System.Drawing.Graphics.FromImage(simage);
            g.Clear(Color.White);
            if (img == null)
            {
                return false;
            }
            if (img_w <= 150 && imgx_h <= 150)
            {

                /*Graphics.DrawImage(Image img ,RectangleF Rf ) RectangleF为固定大小跟坐标画图片,有4个Int的参数,也有4个float参数的
                  的重载,其他重载参见MSDN*/
                g.DrawImage(img, new RectangleF(Convert.ToInt32((150 - img_w) / 2), Convert.ToInt32((150 - imgx_h) / 2), img_w, imgx_h));
                simage.Save(savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
                return true;
            }
            else
            {
                if (img_w >= imgx_h)
                {
                    //计算缩放比例,计算出缩放后的高度
                    imgx_h = imgx_h * 150 / img_w;
                    g.DrawImage(img, new RectangleF(0, Convert.ToInt32((150 - imgx_h) / 2), 150, imgx_h));
                    simage.Save(savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    //g.Save(savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    return true;
                }
                else if (img_w < imgx_h)
                {
                    img_w = img_w * 150 / imgx_h;
                    g.DrawImage(img, new RectangleF(Convert.ToInt32((150 - img_w) / 2), 0, img_w, imgx_h));
                    simage.Save(savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    return true;
                }
            }
            return false;
        }
    }

    -----------------------------------------------------------------

    代码在发布的时候我删除了一些 数据库操作的部分,没测试代码的完整性。仅供参考


     

  • 相关阅读:
    Linux下nginx 的常用命令
    linux下nginx常用命令
    docker logs 命令使用
    docker pause 命令使用
    容器到底是个啥?(附Docker学习资源汇总)
    Docker镜像(image)详解
    Docker常用命令
    Docker常用命令大全
    NEW SECRET “???” ACHIEVEMENT AND CARD BACK FROM BARRENS – MYSTERIES OF THE PHOENIX – FULL SOLUTION INSIDE!
    凤凰之谜卡背 new card back "secrets of the phoenix"
  • 原文地址:https://www.cnblogs.com/cestbon/p/1665103.html
Copyright © 2020-2023  润新知