recherche
Maisondéveloppement back-endTutoriel C#.NetQu'est-ce que la classe d'assistance IO ? Exemple d'introduction de la classe d'aide IO (avec code)

Le contenu de cet article est de présenter qu'est-ce que la classe d'aide IO ? Exemple d'introduction de la classe d'assistance IO (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

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>序列对象
        /// <param>XML文件路径
        /// <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>目标类型(Type类型)
        /// <param>XML文件路径
        /// <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>图片路径
        /// <param>缩略图路径
        /// <param>缩略图宽度
        /// <param>缩略图高度
        /// <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>源图路径
        /// <param>水印图片路径
        /// <param>保存路径
        /// <param>位置
        /// <param>透明度
        /// <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  100)
                    quality = 80;

                //水印透明度
                float iii;
                if (opacity > 0 && opacity 
        /// 生成文字水印
        /// 
        /// <param>源图路径
        /// <param>保存路径
        /// <param>水印文字
        /// <param>文字大小
        /// <param>文字字体
        /// <param>位置
        /// <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  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
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
C # .NET Framework vs.NET Core / 5/6: Quelle est la différence?C # .NET Framework vs.NET Core / 5/6: Quelle est la différence?May 07, 2025 am 12:06 AM

.Netframeworkiswindows-centric, while.netcore / 5/6Supportscross-plateformDevelopment.1) .netframework, puisque 2002, iSidealForwindowsApplications butlimitedIncross-PlateformCapabilities.2) .NetCore, à partir de 2016, AnditseVolutions (.Net5 / 6) offrantbetterperperper, Cross-witsevolutions (.Net5 / 6) offrantbetterperperper, Cross-wit-,.

La communauté des développeurs C # .NET: ressources et soutienLa communauté des développeurs C # .NET: ressources et soutienMay 06, 2025 am 12:11 AM

La communauté C # .NET Developer fournit des ressources et un soutien riches, notamment: 1. Documents officiels de Microsoft, 2. Forums communautaires tels que Stackoverflow et Reddit, et 3. Projets open source sur GitHub. Ces ressources aident les développeurs à améliorer leurs compétences en programmation de l'apprentissage de base aux applications avancées.

L'avantage C # .NET: fonctionnalités, avantages et cas d'utilisationL'avantage C # .NET: fonctionnalités, avantages et cas d'utilisationMay 05, 2025 am 12:01 AM

Les avantages de C # .NET comprennent: 1) les fonctionnalités linguistiques, telles que la programmation asynchrone simplifie le développement; 2) Performance et fiabilité, améliorant l'efficacité par le biais de mécanismes de compilation JIT et de collecte des ordures; 3) Prise en charge multiplateforme, .Netcore étend les scénarios d'application; 4) Un large éventail d'applications pratiques, avec des performances exceptionnelles du Web au bureau et au développement de jeux.

C # est-il toujours associé à .NET? Explorer des alternativesC # est-il toujours associé à .NET? Explorer des alternativesMay 04, 2025 am 12:06 AM

C # n'est pas toujours lié à .NET. 1) C # peut s'exécuter dans l'environnement mono d'exécution et convient à Linux et à MacOS. 2) Dans le moteur Unity Game, C # est utilisé pour les scripts et ne s'appuie pas sur le framework .NET. 3) C # peut également être utilisé pour le développement du système intégré, tel que .NetMicRoframework.

L'écosystème .NET: le rôle de C # et au-delàL'écosystème .NET: le rôle de C # et au-delàMay 03, 2025 am 12:04 AM

C # joue un rôle de base dans l'écosystème .NET et est le langage préféré pour les développeurs. 1) C # fournit des méthodes de programmation efficaces et faciles à utiliser, combinant les avantages de C, C et Java. 2) Exécuter via .NET Runtime (CLR) pour assurer une opération efficace de plate-forme multipliée. 3) C # prend en charge l'utilisation de base à avancée, comme la programmation LINQ et asynchrone. 4) L'optimisation et les meilleures pratiques incluent l'utilisation de la programmation StringBuilder et asynchrone pour améliorer les performances et la maintenabilité.

C # En tant que langue .NET: la base de l'écosystèmeC # En tant que langue .NET: la base de l'écosystèmeMay 02, 2025 am 12:01 AM

C # est un langage de programmation publié par Microsoft en 2000, visant à combiner la puissance de C et la simplicité de Java. 1.C # est un langage de programmation orienté objet type qui prend en charge l'encapsulation, l'héritage et le polymorphisme. 2. Le processus de compilation de C # convertit le code en un langage intermédiaire (IL), puis le compile en exécution de code machine dans l'environnement d'exécution .NET (CLR). 3. L'utilisation de base de C # comprend des déclarations variables, des flux de contrôle et des définitions de fonctions, tandis que les usages avancés couvrent la programmation asynchrone, LINQ et les délégués, etc. 4. Les erreurs courantes incluent les exceptions de mésappariement de type et de référence nulle, qui peuvent être déboguées via le débogueur, la gestion et le journalisation des exceptions. 5. Les suggestions d'optimisation des performances incluent l'utilisation de LINQ, de programmation asynchrone et d'amélioration de la lisibilité du code.

C # vs .net: clarifier les principales différences et similitudesC # vs .net: clarifier les principales différences et similitudesMay 01, 2025 am 12:12 AM

C # est un langage de programmation, tandis que .NET est un cadre logiciel. 1.C # est développé par Microsoft et convient au développement multiplateforme. 2..net fournit des bibliothèques de classe et des environnements d'exécution, et prend en charge multilingue. Les deux travaillent ensemble pour créer des applications modernes.

Au-delà du battage médiatique: évaluer le rôle actuel de C # .NETAu-delà du battage médiatique: évaluer le rôle actuel de C # .NETApr 30, 2025 am 12:06 AM

C # .NET est une puissante plate-forme de développement qui combine les avantages du langage C # et du framework .net. 1) Il est largement utilisé dans les applications d'entreprise, le développement Web, le développement de jeux et le développement des applications mobiles. 2) Le code C # est compilé dans un langage intermédiaire et est exécuté par l'environnement d'exécution .NET, prenant en charge la collecte des ordures, les requêtes de sécurité de type et Linq. 3) Les exemples d'utilisation comprennent la sortie de la console de base et les requêtes LINQ avancées. 4) Les erreurs courantes telles que les références vides et les erreurs de conversion de type peuvent être résolues via les débogueurs et la journalisation. 5) Les suggestions d'optimisation des performances comprennent la programmation asynchrone et l'optimisation des requêtes LINQ. 6) Malgré la concurrence, C # .NET conserve sa position importante grâce à l'innovation continue.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.