zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    08 正则表达式
    07 函数&对象
    06 Math&Date&Json
    05 数组&字符串
    04 循环控制
    03 流程控制
    02 数据类型&运算符
    大道至简
    Avg_row_length是怎么计算的?
    理解innodb buffer pool
  • 原文地址:https://www.cnblogs.com/rinack/p/3672167.html
Copyright © 2011-2022 走看看