zoukankan      html  css  js  c++  java
  • ImageUploadAssist--ImageHelper

    public static class ImageHelper
        {
    
            /// <summary>
            /// 读图片
            /// </summary>
            /// <param name="filepath"></param>
            /// <returns></returns>
            public static string ImgToBase64String(string filepath)
            {
                try
                {
                    Bitmap bmp = new Bitmap(filepath);
                    MemoryStream ms = new MemoryStream();
                    bmp.Save(ms, ImageFormat.Jpeg);
                    byte[] arr = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(arr, 0, (int)ms.Length);
                    ms.Close();
                    return Convert.ToBase64String(arr);
                }
                catch (Exception ex)
                {
                    return string.Empty;
                }
    
            }
    
    
            /// <summary>
            /// 无损压缩图片
            /// </summary>
            /// <param name="sFile">原图片</param>
            /// <param name="dFile">压缩后保存位置</param>
            /// <param name="fileName"></param>
            /// <param name="dHeight">高度</param>
            /// <param name="dWidth"></param>
            /// <param name="flag">压缩质量 1-100</param>
            /// <returns></returns>
            public static bool GetPicThumbnail(string sFile, string dFile, string fileName, int dHeight, int dWidth, int flag)
            {
                Image iSource = Image.FromFile(sFile);
                ImageFormat tFormat = iSource.RawFormat;
                int sW = 0, sH = 0;
    
                //按比例缩放
                Size tem_size = new Size(iSource.Width, iSource.Height);
                if (dWidth == 0)
                    dWidth = dHeight * tem_size.Width / tem_size.Height;
                if (dHeight == 0)
                    dHeight = dWidth * tem_size.Height / tem_size.Width;
    
                if (tem_size.Width > dHeight || tem_size.Width > dWidth) //将**改成c#中的或者操作符号
                {
                    if ((tem_size.Width * dHeight) > (tem_size.Height * dWidth))
                    {
                        sW = dWidth;
                        sH = (dWidth * tem_size.Height) / tem_size.Width;
                    }
                    else
                    {
                        sH = dHeight;
                        sW = (tem_size.Width * dHeight) / tem_size.Height;
                    }
                }
                else
                {
                    sW = tem_size.Width;
                    sH = tem_size.Height;
                }
    
                Bitmap ob = new Bitmap(dWidth, dHeight);
                Graphics g = Graphics.FromImage(ob);
                g.Clear(Color.WhiteSmoke);
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);
                g.Dispose();
    
                //以下代码为保存图片时,设置压缩质量
                EncoderParameters ep = new EncoderParameters();
                long[] qy = new long[1];
                qy[0] = flag;//设置压缩的比例1-100
                EncoderParameter eParam = new EncoderParameter(Encoder.Quality, qy);
                ep.Param[0] = eParam;
    
                try
                {
                    ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
                    ImageCodecInfo jpegICIinfo = null;
                    for (int x = 0; x < arrayICI.Length; x++)
                    {
                        if (arrayICI[x].FormatDescription.Equals("JPEG"))
                        {
                            jpegICIinfo = arrayICI[x];
                            break;
                        }
                    }
    
                    //创建文件夹
                    if (!Directory.Exists(dFile))
                    {
                        var directoryInfo = new DirectoryInfo(dFile);
                        directoryInfo.Create();
                    }
    
                    if (jpegICIinfo != null)
                    {
                        ob.Save(dFile + fileName, jpegICIinfo, ep);//dFile是压缩后的新路径
                    }
                    else
                    {
                        ob.Save(dFile, tFormat);
                    }
                    return true;
    
                }
                catch
                {
                    return false;
                }
    
                finally
                {
                    iSource.Dispose();
                    ob.Dispose();
                }
            }
    
    
            /// <summary>
            /// 判断文件扩展名
            /// </summary>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static FileExtension CheckImageFile(string fileName)
            {
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                var br = new BinaryReader(fs);
                string fileType = string.Empty; ;
                try
                {
                    byte data = br.ReadByte();
                    fileType += data.ToString();
                    data = br.ReadByte();
                    fileType += data.ToString();
                    FileExtension extension;
                    try
                    {
                        extension = (FileExtension)Enum.Parse(typeof(FileExtension), fileType);
                    }
                    catch
                    {
    
                        extension = FileExtension.VALIDFILE;
                    }
                    return extension;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    fs.Close();
                    br.Close();
                }
            }
    
            public enum FileExtension
            {
                JPG = 255216,
                GIF = 7173,
                PNG = 13780,
                SWF = 6787,
                RAR = 8297,
                ZIP = 8075,
                _7Z = 55122,
                VALIDFILE = 9999999
            }
        }
  • 相关阅读:
    程序崩溃访问非法内存
    C# IP转换,时间转换
    _heap_alloc_dbg 崩溃
    TaskIcon 系统任务栏图标
    zlib 压缩使用
    桌面清理工具
    CMMI知识库(精简版)
    JAVA程序员面试题集合
    OracleDECODE用法
    Oracle索引重建
  • 原文地址:https://www.cnblogs.com/FH-cnblogs/p/5711658.html
Copyright © 2011-2022 走看看