IO帮助类是什么?IO帮助类的实例介绍(附代码)

如果下载的源码需要作者授权,请更换源码。本站免费分享资源不会增加授权

本篇文章给大家带来的内容是介绍IO帮助类是什么?IO帮助类的实例介绍(附代码)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

using System; using System.IO; using System.Web; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Xml.Serialization;  namespace ZMM.Core {     /// <summary>     /// IO帮助类     /// </summary>     public class IOHelper     {         //是否已经加载了JPEG编码解码器         private static bool _isloadjpegcodec = false;         //当前系统安装的JPEG编码解码器         private static ImageCodecInfo _jpegcodec = null;          /// <summary>         /// 获得文件物理路径         /// </summary>         /// <returns></returns>         public static string GetMapPath(string path)         {             if (HttpContext.Current != null)             {                 return HttpContext.Current.Server.MapPath(path);             }             else             {                 return System.Web.Hosting.HostingEnvironment.MapPath(path);             }         }          #region  序列化          /// <summary>         /// XML序列化         /// </summary>         /// <param name="obj">序列对象</param>         /// <param name="filePath">XML文件路径</param>         /// <returns>是否成功</returns>         public static bool SerializeToXml(object obj, string filePath)         {             bool result = false;              FileStream fs = null;             try             {                 fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);                 XmlSerializer serializer = new XmlSerializer(obj.GetType());                 serializer.Serialize(fs, obj);                 result = true;             }             catch (Exception ex)             {                 throw ex;             }             finally             {                 if (fs != null)                     fs.Close();             }             return result;          }          /// <summary>         /// XML反序列化         /// </summary>         /// <param name="type">目标类型(Type类型)</param>         /// <param name="filePath">XML文件路径</param>         /// <returns>序列对象</returns>         public static object DeserializeFromXML(Type type, string filePath)         {             FileStream fs = null;             try             {                 fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);                 XmlSerializer serializer = new XmlSerializer(type);                 return serializer.Deserialize(fs);             }             catch (Exception ex)             {                 throw ex;             }             finally             {                 if (fs != null)                     fs.Close();             }         }          #endregion          #region  水印,缩略图          /// <summary>         /// 获得当前系统安装的JPEG编码解码器         /// </summary>         /// <returns></returns>         public static ImageCodecInfo GetJPEGCodec()         {             if (_isloadjpegcodec == true)                 return _jpegcodec;              ImageCodecInfo[] codecsList = ImageCodecInfo.GetImageEncoders();             foreach (ImageCodecInfo codec in codecsList)             {                 if (codec.MimeType.IndexOf("jpeg") > -1)                 {                     _jpegcodec = codec;                     break;                 }              }             _isloadjpegcodec = true;             return _jpegcodec;         }          /// <summary>         /// 生成缩略图         /// </summary>         /// <param name="imagePath">图片路径</param>         /// <param name="thumbPath">缩略图路径</param>         /// <param name="width">缩略图宽度</param>         /// <param name="height">缩略图高度</param>         /// <param name="mode">生成缩略图的方式</param>            public static void GenerateThumb(string imagePath, string thumbPath, int width, int height, string mode)         {             Image image = Image.FromFile(imagePath);              string extension = imagePath.Substring(imagePath.LastIndexOf(".")).ToLower();             ImageFormat imageFormat = null;             switch (extension)             {                 case ".jpg":                 case ".jpeg":                     imageFormat = ImageFormat.Jpeg;                     break;                 case ".bmp":                     imageFormat = ImageFormat.Bmp;                     break;                 case ".png":                     imageFormat = ImageFormat.Png;                     break;                 case ".gif":                     imageFormat = ImageFormat.Gif;                     break;                 default:                     imageFormat = ImageFormat.Jpeg;                     break;             }              int toWidth = width > 0 ? width : image.Width;             int toHeight = height > 0 ? height : image.Height;              int x = 0;             int y = 0;             int ow = image.Width;             int oh = image.Height;              switch (mode)             {                 case "HW"://指定高宽缩放(可能变形)                                break;                 case "W"://指定宽,高按比例                                  toHeight = image.Height * width / image.Width;                     break;                 case "H"://指定高,宽按比例                     toWidth = image.Width * height / image.Height;                     break;                 case "Cut"://指定高宽裁减(不变形)                                if ((double)image.Width / (double)image.Height > (double)toWidth / (double)toHeight)                     {                         oh = image.Height;                         ow = image.Height * toWidth / toHeight;                         y = 0;                         x = (image.Width - ow) / 2;                     }                     else                     {                         ow = image.Width;                         oh = image.Width * height / toWidth;                         x = 0;                         y = (image.Height - oh) / 2;                     }                     break;                 default:                     break;             }              //新建一个bmp             Image bitmap = new Bitmap(toWidth, toHeight);              //新建一个画板             Graphics g = Graphics.FromImage(bitmap);              //设置高质量插值法             g.InterpolationMode = InterpolationMode.High;              //设置高质量,低速度呈现平滑程度             g.SmoothingMode = SmoothingMode.HighQuality;              //清空画布并以透明背景色填充             g.Clear(Color.Transparent);              //在指定位置并且按指定大小绘制原图片的指定部分             g.DrawImage(image,                         new Rectangle(0, 0, toWidth, toHeight),                         new Rectangle(x, y, ow, oh),                         GraphicsUnit.Pixel);              try             {                 bitmap.Save(thumbPath, imageFormat);             }             catch (Exception ex)             {                 throw ex;             }             finally             {                 if (g != null)                     g.Dispose();                 if (bitmap != null)                     bitmap.Dispose();                 if (image != null)                     image.Dispose();             }         }          /// <summary>         /// 生成图片水印         /// </summary>         /// <param name="originalPath">源图路径</param>         /// <param name="watermarkPath">水印图片路径</param>         /// <param name="targetPath">保存路径</param>         /// <param name="position">位置</param>         /// <param name="opacity">透明度</param>         /// <param name="quality">质量</param>         public static void GenerateImageWatermark(string originalPath, string watermarkPath, string targetPath, int position, int opacity, int quality)         {             Image originalImage = null;             Image watermarkImage = null;             //图片属性             ImageAttributes attributes = null;             //画板             Graphics g = null;             try             {                  originalImage = Image.FromFile(originalPath);                 watermarkImage = new Bitmap(watermarkPath);                  if (watermarkImage.Height >= originalImage.Height || watermarkImage.Width >= originalImage.Width)                 {                     originalImage.Save(targetPath);                     return;                 }                  if (quality < 0 || quality > 100)                     quality = 80;                  //水印透明度                 float iii;                 if (opacity > 0 && opacity <= 10)                     iii = (float)(opacity / 10.0F);                 else                     iii = 0.5F;                  //水印位置                 int x = 0;                 int y = 0;                 switch (position)                 {                     case 1:                         x = (int)(originalImage.Width * (float).01);                         y = (int)(originalImage.Height * (float).01);                         break;                     case 2:                         x = (int)((originalImage.Width * (float).50) - (watermarkImage.Width / 2));                         y = (int)(originalImage.Height * (float).01);                         break;                     case 3:                         x = (int)((originalImage.Width * (float).99) - (watermarkImage.Width));                         y = (int)(originalImage.Height * (float).01);                         break;                     case 4:                         x = (int)(originalImage.Width * (float).01);                         y = (int)((originalImage.Height * (float).50) - (watermarkImage.Height / 2));                         break;                     case 5:                         x = (int)((originalImage.Width * (float).50) - (watermarkImage.Width / 2));                         y = (int)((originalImage.Height * (float).50) - (watermarkImage.Height / 2));                         break;                     case 6:                         x = (int)((originalImage.Width * (float).99) - (watermarkImage.Width));                         y = (int)((originalImage.Height * (float).50) - (watermarkImage.Height / 2));                         break;                     case 7:                         x = (int)(originalImage.Width * (float).01);                         y = (int)((originalImage.Height * (float).99) - watermarkImage.Height);                         break;                     case 8:                         x = (int)((originalImage.Width * (float).50) - (watermarkImage.Width / 2));                         y = (int)((originalImage.Height * (float).99) - watermarkImage.Height);                         break;                     case 9:                         x = (int)((originalImage.Width * (float).99) - (watermarkImage.Width));                         y = (int)((originalImage.Height * (float).99) - watermarkImage.Height);                         break;                 }                  //颜色映射表                 ColorMap colorMap = new ColorMap();                 colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);                 colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);                 ColorMap[] newColorMap = { colorMap };                  //颜色变换矩阵,iii是设置透明度的范围0到1中的单精度类型                 float[][] newColorMatrix ={                                              new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},                                             new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},                                             new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},                                             new float[] {0.0f,  0.0f,  0.0f,  iii, 0.0f},                                             new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}                                            };                 //定义一个 5 x 5 矩阵                 ColorMatrix matrix = new ColorMatrix(newColorMatrix);                  //图片属性                 attributes = new ImageAttributes();                 attributes.SetRemapTable(newColorMap, ColorAdjustType.Bitmap);                 attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);                  //画板                 g = Graphics.FromImage(originalImage);                 //绘制水印                 g.DrawImage(watermarkImage, new Rectangle(x, y, watermarkImage.Width, watermarkImage.Height), 0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel, attributes);                 //保存图片                 EncoderParameters encoderParams = new EncoderParameters();                 encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, new long[] { quality });                 if (GetJPEGCodec() != null)                     originalImage.Save(targetPath, _jpegcodec, encoderParams);                 else                     originalImage.Save(targetPath);             }             catch (Exception ex)             {                 throw ex;             }             finally             {                 if (g != null)                     g.Dispose();                 if (attributes != null)                     attributes.Dispose();                 if (watermarkImage != null)                     watermarkImage.Dispose();                 if (originalImage != null)                     originalImage.Dispose();             }         }          /// <summary>         /// 生成文字水印         /// </summary>         /// <param name="originalPath">源图路径</param>         /// <param name="targetPath">保存路径</param>         /// <param name="text">水印文字</param>         /// <param name="textSize">文字大小</param>         /// <param name="textFont">文字字体</param>         /// <param name="position">位置</param>         /// <param name="quality">质量</param>         public static void GenerateTextWatermark(string originalPath, string targetPath, string text, int textSize, string textFont, int position, int quality)         {             Image originalImage = null;             //画板             Graphics g = null;             try             {                 originalImage = Image.FromFile(originalPath);                 //画板                 g = Graphics.FromImage(originalImage);                 if (quality < 0 || quality > 100)                     quality = 80;                  Font font = new Font(textFont, textSize, FontStyle.Regular, GraphicsUnit.Pixel);                 SizeF sizePair = g.MeasureString(text, font);                  float x = 0;                 float y = 0;                  switch (position)                 {                     case 1:                         x = (float)originalImage.Width * (float).01;                         y = (float)originalImage.Height * (float).01;                         break;                     case 2:                         x = ((float)originalImage.Width * (float).50) - (sizePair.Width / 2);                         y = (float)originalImage.Height * (float).01;                         break;                     case 3:                         x = ((float)originalImage.Width * (float).99) - sizePair.Width;                         y = (float)originalImage.Height * (float).01;                         break;                     case 4:                         x = (float)originalImage.Width * (float).01;                         y = ((float)originalImage.Height * (float).50) - (sizePair.Height / 2);                         break;                     case 5:                         x = ((float)originalImage.Width * (float).50) - (sizePair.Width / 2);                         y = ((float)originalImage.Height * (float).50) - (sizePair.Height / 2);                         break;                     case 6:                         x = ((float)originalImage.Width * (float).99) - sizePair.Width;                         y = ((float)originalImage.Height * (float).50) - (sizePair.Height / 2);                         break;                     case 7:                         x = (float)originalImage.Width * (float).01;                         y = ((float)originalImage.Height * (float).99) - sizePair.Height;                         break;                     case 8:                         x = ((float)originalImage.Width * (float).50) - (sizePair.Width / 2);                         y = ((float)originalImage.Height * (float).99) - sizePair.Height;                         break;                     case 9:                         x = ((float)originalImage.Width * (float).99) - sizePair.Width;                         y = ((float)originalImage.Height * (float).99) - sizePair.Height;                         break;                 }                  g.DrawString(text, font, new SolidBrush(Color.White), x + 1, y + 1);                 g.DrawString(text, font, new SolidBrush(Color.Black), x, y);                  //保存图片                 EncoderParameters encoderParams = new EncoderParameters();                 encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, new long[] { quality });                 if (GetJPEGCodec() != null)                     originalImage.Save(targetPath, _jpegcodec, encoderParams);                 else                     originalImage.Save(targetPath);             }             catch (Exception ex)             {                 throw ex;             }             finally             {                 if (g != null)                     g.Dispose();                 if (originalImage != null)                     originalImage.Dispose();             }         }          #endregion     } }
本文由(壳先生)整理自网络,如转载请注明出处:https://www.mrshell.com;
本站发布的内容若侵犯到您的权益,请邮件联系 i@mrshell.com 删除,我们将及时处理!
===========================================================================

1. 本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2. 本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3. 不得使用于非法商业用途,商用请支持正版!不得违反国家法律,否则后果自负!
4. 若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

=================================================================

壳先生 » IO帮助类是什么?IO帮助类的实例介绍(附代码)

发表评论

提供最优质的资源集合

立即查看 了解详情