`

C# GetThumbnailImageAbort

    博客分类:
  • C#
 
阅读更多

        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = null;
            System.Drawing.Image upimage = null;
            System.Drawing.Image thumimg = null;
            System.Drawing.Image simage = null;
            Bitmap outputfile = null;
            try
            {
                string extension = Path.GetExtension("D:\\1.jpg").ToUpper();//File1.PostedFile.FileName
                string filename = DateTime.Now.ToString("yyyyMMddhhmmss");
                string smallpath = "d:\\";//Server.MapPath(".") + "/smallimg/";
                string bigpath = "d:\\";//Server.MapPath(".") + "/bigimg/";
                int width, height, newwidth, newheight;
                System.Drawing.Image.GetThumbnailImageAbort callb = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
                if (!Directory.Exists(smallpath))
                    Directory.CreateDirectory(smallpath);
                if (!Directory.Exists(bigpath))
                    Directory.CreateDirectory(bigpath);
                FileStream File1 = new FileStream("d:\\1.jpg", FileMode.Open, FileAccess.ReadWrite);
                byte[] data = new byte[File1.Length];
                File1.Read(data,0,data.Length);
                File1.Close();
               
                //Stream upimgfile =File1.PostedFile.InputStream;
                MemoryStream upimgfile = new MemoryStream(data);
                string simagefile = "d:\\click.PNG"; //Server.MapPath("a8logo.jpg");
                //要加水印的文件
                simage = System.Drawing.Image.FromFile(simagefile);
                upimage = System.Drawing.Image.FromStream(upimgfile);
                //上传的图片
                width = upimage.Width;
                height = upimage.Height;
                if (width > height)
                {
                    newwidth = 200;
                    newheight = (int)((double)height / (double)width * (double)newwidth);
                }
                else
                {
                    newheight = 200;
                    newwidth = (int)((double)width / (double)height * (double)newheight);
                }
                thumimg = upimage.GetThumbnailImage(newwidth, newheight, callb, IntPtr.Zero);
                outputfile = new Bitmap(upimage);
                g = Graphics.FromImage(outputfile);
                g.DrawImage(simage, new Rectangle(upimage.Width - simage.Width, upimage.Height - simage.Height, upimage.Width, upimage.Height),
                            0, 0, upimage.Width, upimage.Height, GraphicsUnit.Pixel);
                string newpath = bigpath + filename + extension; //原始图路径
                string thumpath = smallpath + filename+"snap" + extension; //缩略图路径
                outputfile.Save(newpath);
                thumimg.Save(thumpath);
                outputfile.Dispose();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (g != null)
                    g.Dispose();
                if (thumimg != null)
                    thumimg.Dispose();
                if (upimage != null)
                    upimage.Dispose();
                if (simage != null)
                    simage.Dispose();
            }
        }

        public bool ThumbnailCallback()
        {
            return false;
        }

分享到:
评论

相关推荐

    C#中打开文件和自动生成缩略图

    在C#编程语言中,处理图像文件和生成缩略图是一项常见的需求,尤其是在涉及图形用户界面(GUI)的应用程序开发中。以下是对“C#中打开文件和自动生成缩略图”这一主题的深入解析,涵盖了如何使用C#中的Winforms来...

    C#图片裁剪与缩放最简单的写法

    System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(Reduce_Width, Reduce_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero); ``` - 其中`...

    C#-GDI+编程之基础篇.doc

    C# GDI+ 编程基础篇 GDI+ 是一个图形设备接口,它提供了一组库函数,允许开发者与各种设备(如监视器、打印机等)进行交互。GDI+ 的本质在于,它能够替代开发人员实现与这些设备的直接交互。从开发者角度来看,要...

    进行缩放.doc

    Image newImg = oldImg.GetThumbnailImage(newWidth, newHeight, new Image.GetThumbnailImageAbort(IsTrue), IntPtr.Zero); // 对原图片进行缩放 return newImg; } private static bool IsTrue() // 在 Image ...

    asp.net 生成缩略图代码

    System.Drawing.Image.GetThumbnailImageAbort callb = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr....

    asp.net中生成缩略图并添加版权实例代码

    `GetThumbnailImageAbort` 回调方法 `callb` 用于在生成缩略图过程中中断操作。 在事件处理函数 `sm_Click` 中,我们首先检查用户上传的文件是否为 `.jpg` 或 `.gif` 格式,然后将上传的文件保存到服务器上的指定...

Global site tag (gtag.js) - Google Analytics