• C#中图片切割,图片压缩,缩略图生成的代码


    **//// <summary>
        /// 图片切割函数
        /// </summary>
        /// <param name="sourceFile">原始图片文件</param>
        /// <param name="xNum">在X轴上的切割数量</param>
        /// <param name="yNum">在Y轴上的切割数量</param>
        /// <param name="quality">质量压缩比</param>
        /// <param name="outputFile">输出文件名,不带后缀</param>
        /// <returns>成功返回true,失败则返回false</returns>
        public static bool imageCut(String sourceFile, int xNum, int yNum, long quality, String outputFile)
        {
            try
            {
                long imageQuality                        =    quality;
                Bitmap sourceImage                       =    new Bitmap(sourceFile);
                ImageCodecInfo myImageCodecInfo          =    GetEncoderInfo("image/jpeg");
                Encoder myEncoder                        =    Encoder.Quality;
                EncoderParameters myEncoderParameters    =    new EncoderParameters(1);
                EncoderParameter myEncoderParameter      =    new EncoderParameter(myEncoder, imageQuality);
                myEncoderParameters.Param[0]             =    myEncoderParameter;
                float xWidth                             =    sourceImage.Width / xNum;
                float yWidth                             =    sourceImage.Height / yNum;
                String outputImage                       =    "";
                 
                for (int countY = 0; countY < yNum; countY++)
                    for (int countX = 0; countX < xNum; countX++)
                    {
     
                        RectangleF cloneRect             =    new RectangleF(countX * xWidth, countY * yWidth, xWidth, yWidth);
                        Bitmap newImage                  =    sourceImage.Clone(cloneRect, PixelFormat.Format24bppRgb);
                        outputImage                      =    outputFile + countX + countY + ".jpg";
                        newImage.Save(outputImage, myImageCodecInfo, myEncoderParameters);
     
                    }
                return true;
            }
            catch
            {
                return false;
            }
     
        }
        #endregion imageCut
     
        imageCompress
    #region
    imageCompress
        /**//// <summary>
        /// 图片压缩函数
        /// </summary>
        /// <param name="sourceFile">原始图片文件</param>
        /// <param name="quality">质量压缩比</param>
        /// <param name="ouputFile">输出文件名,请用 .jpg 后缀 </param>
        /// <returns>成功返回true,失败则返回false</returns>
        public static bool imageCompress(String sourceFile,long quality,String outputFile)
        {
            try
            {
                long imageQuality                      =    quality;
                Bitmap sourceImage                     =    new Bitmap(sourceFile);
                ImageCodecInfo myImageCodecInfo        =    GetEncoderInfo("image/jpeg");
                Encoder myEncoder                      =    Encoder.Quality;
                EncoderParameters myEncoderParameters  =    new EncoderParameters(1);
                EncoderParameter myEncoderParameter    =    new EncoderParameter(myEncoder, imageQuality);
                myEncoderParameters.Param[0]           =    myEncoderParameter;
                
                sourceImage.Save(outputFile, myImageCodecInfo, myEncoderParameters);
                return true;
     
            }
            catch
            {
                return false;
            }
     
        }
        #endregion imageCompress
     
        getThumImage#region getThumImage
        /**//// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="sourceFile">原始图片文件</param>
        /// <param name="quality">质量压缩比</param>
        /// <param name="multiple">收缩倍数</param>
        /// <param name="outputFile">输出文件名</param>
        /// <returns>成功返回true,失败则返回false</returns>
        public static bool getThumImage(String sourceFile, long quality, int multiple, String outputFile)
        {
            try
            {
                long imageQuality                      =   quality;
                Bitmap sourceImage                     =   new Bitmap(sourceFile);
                ImageCodecInfo myImageCodecInfo        =   GetEncoderInfo("image/jpeg");
                Encoder myEncoder                      =   Encoder.Quality;
                EncoderParameters myEncoderParameters  =   new EncoderParameters(1);
                EncoderParameter myEncoderParameter    =   new EncoderParameter(myEncoder, imageQuality);
                myEncoderParameters.Param[0]           =   myEncoderParameter;
                float xWidth                           =   sourceImage.Width;
                float yWidth                           =   sourceImage.Height;
                Bitmap newImage                        =   new Bitmap((int)(xWidth /multiple), (int)(yWidth /multiple));
                Graphics g                             =   Graphics.FromImage(newImage);
                 
                g.DrawImage(sourceImage, 0, 0, xWidth / multiple, yWidth / multiple);
                g.Dispose();
                newImage.Save(outputFile,myImageCodecInfo,myEncoderParameters);
                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion getThumImage
     
        ImageCodecInfo#region ImageCodecInfo
        /**//// <summary>
        /// 获取图片编码信息
        /// </summary>
        private static ImageCodecInfo GetEncoderInfo(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }
  • 相关阅读:
    Goahead源码解析(转)
    登录处理
    action交互
    无需FQ,自建本地CDN,秒上StackOverFlow!
    浅谈Linux中的信号处理机制(三)
    漫谈C++11 Thread库之原子操作
    漫谈c++11 Thread库之使写多线程程序
    浅谈Linux中的信号处理机制(二)
    浅谈Linux中的信号处理机制(一)
    CentOS7 安装Nginx
  • 原文地址:https://www.cnblogs.com/liushunli/p/4020064.html
Copyright © 2020-2023  润新知