zoukankan      html  css  js  c++  java
  • 图片处理类(ImageClass)

    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System;

    namespace LiTianPing.Web.Controls
    {
     /// <summary>
     /// 图片处理类
     /// 1、生成缩略图片或按照比例改变图片的大小和画质
     /// 2、将生成的缩略图放到指定的目录下
     /// </summary>
     public class ImageClass
     {
      public Image ResourceImage;
      private int ImageWidth;
      private int ImageHeight;
      public int imgWidth;

      public string ErrMessage;

      /// <summary>
      /// 类的构造函数
      /// </summary>
      /// <param name="ImageFileName">图片文件的全路径名称</param>
      public ImageClass(string ImageFileName)
      {
       ResourceImage=Image.FromFile(ImageFileName);
       imgWidth=ResourceImage.Width;
       ErrMessage="";
      }

      public bool ThumbnailCallback()
      {
       return false;
      }

      /// <summary>
      /// 生成缩略图重载方法1,返回缩略图的Image对象
      /// </summary>
      /// <param name="Width">缩略图的宽度</param>
      /// <param name="Height">缩略图的高度</param>
      /// <returns>缩略图的Image对象</returns>
      public Image GetReducedImage(int Width,int Height)
      {
       try
       {
        Image ReducedImage;

        Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);
        
        ReducedImage=ResourceImage.GetThumbnailImage(Width,Height,callb,IntPtr.Zero);
     
        return ReducedImage;
       }
       catch(Exception e)
       {
        ErrMessage=e.Message;
        return null;
       }
      }

      /// <summary>
      /// 生成缩略图重载方法2,将缩略图文件保存到指定的路径
      /// </summary>
      /// <param name="Width">缩略图的宽度</param>
      /// <param name="Height">缩略图的高度</param>
      /// <param name="targetFilePath">缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>
      /// <returns>成功返回true,否则返回false</returns>
      public bool GetReducedImage(int Width,int Height,string targetFilePath)
      {
       try
       {
        Image ReducedImage;

        Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);
        
        ReducedImage=ResourceImage.GetThumbnailImage(Width,Height,callb,IntPtr.Zero);
        ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg);

        ReducedImage.Dispose();
     
        return true;
       }
       catch(Exception e)
       {
        ErrMessage=e.Message;
        return false;
       }
      }

      /// <summary>
      /// 生成缩略图重载方法3,返回缩略图的Image对象
      /// </summary>
      /// <param name="Percent">缩略图的宽度百分比 如:需要百分之80,就填0.8</param> 
      /// <returns>缩略图的Image对象</returns>
      public Image GetReducedImage(double Percent)
      {
       try
       {
        Image ReducedImage;

        Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);

        ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);
        ImageHeight=Convert.ToInt32(ResourceImage.Width*Percent);
        
        ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);
     
        return ReducedImage;
       }
       catch(Exception e)
       {
        ErrMessage=e.Message;
        return null;
       }
      }

      /// <summary>
      /// 生成缩略图重载方法4,返回缩略图的Image对象
      /// </summary>
      /// <param name="Percent">缩略图的宽度百分比 如:需要百分之80,就填0.8</param> 
      /// <param name="targetFilePath">缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>
      /// <returns>成功返回true,否则返回false</returns>
      public bool GetReducedImage(double Percent,string targetFilePath)
      {
       try
       {
        Image ReducedImage;

        Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);

        ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);
        ImageHeight=Convert.ToInt32(ResourceImage.Width*Percent);
        
        ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);

        ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg);

        ReducedImage.Dispose();
     
        return true;
       }
       catch(Exception e)
       {
        ErrMessage=e.Message;
        return false;
       }
      }
      
      /// <summary>
      /// 生成缩略图重载方法5,返回缩略图的Image对象
      /// </summary>
      /// <param name="Width">缩略图的宽度</param>
      /// <param name="targetFilePath">>缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>
      /// <returns></returns>
      public bool GetReducedImage(int Width,string targetFilePath)
      {
       try
       {
        Image ReducedImage;

        Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);

        
        double Percent=Convert.ToDouble(Width)/Convert.ToDouble(ResourceImage.Width);
        Percent=Convert.ToDouble(Percent.ToString("#0.0"));
        //ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);
        ImageWidth=Width;
        ImageHeight=Convert.ToInt32(ResourceImage.Height*Percent);
        
        ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);

        ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg);

        ReducedImage.Dispose();
     
        return true;
       }
       catch(Exception e)
       {
        ErrMessage=e.Message;
        return false;
       }
      }
     }
    }

  • 相关阅读:
    Windows下查看某个端口被哪个服务占用
    win8调出右侧菜单栏
    testlink+vertrigoServ搭建测试用例管理系统
    JMeter+Ant+Jenkins
    测试中的基本概念
    测试与开发的关系
    Windows 7 sometimes breaks FTP connections on Java 7 if firewall is enabled.
    在博霞路22号(浦东软件园祖冲之园)上班,党组织关系可以转到哪里?抬头是什么?
    Photoshop软件破解补丁安装方法
    Apache JMeter HTTPS(S) Test Script Recorder
  • 原文地址:https://www.cnblogs.com/xsmhero/p/1607454.html
Copyright © 2011-2022 走看看