首页后端开发ASP.NETIO帮助类是什么?IO帮助类的实例介绍(附代码)

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

时间2024-01-31 00:44:03发布访客分类ASP.NET浏览604
导读:收集整理的这篇文章主要介绍了IO帮助类是什么?IO帮助类的实例介绍(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是介绍IO帮助类是什么?IO帮助类的实例介绍(附代码)。有一定的参考价值,有需要的朋友可以...
收集整理的这篇文章主要介绍了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    }
}
    

以上就是IO帮助类是什么?IO帮助类的实例介绍(附代码)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

IO

若转载请注明出处: IO帮助类是什么?IO帮助类的实例介绍(附代码)
本文地址: https://pptw.com/jishu/593256.html
javascript怎么删除非数字的字符 使用C语言怎样清空输入缓冲区?这里有多种方法值得借鉴

游客 回复需填写必要信息