zoukankan      html  css  js  c++  java
  • c# 生成自定义图片

    using System.Drawing;
    using System.IO;
    using System.Drawing.Imaging;
    using System;
    
    namespace treads
    {
        /// <summary>
        /// 生成略缩图
        /// </summary>
        public class Class2
        {
            private Image srcImage;
            private string srcFileName= @"X";//获取图片的路径
            private string srcFileName1 = @"x";//要保持图片的新路径
    
            /// <summary>
            /// 回调
            /// </summary>
            /// <returns></returns>
            public bool ThumbnailCallback()
            {
                return false;
            }
            /// <summary>
            /// 保存缩略图
            /// </summary>
            /// <param name="Width"></param>
            /// <param name="Height"></param>
            public void SaveThumbnailImage(int Width, int Height)
            {
                switch (Path.GetExtension(srcFileName).ToLower())
                {
                    case ".png":
                        SaveImage(Width, Height, ImageFormat.Png);
                        break;
                    case ".gif":
                        SaveImage(Width, Height, ImageFormat.Gif);
                        break;
                    default:
                        SaveImage(Width, Height, ImageFormat.Jpeg);
                        break;
                }
            }
    
            /// <summary>
            /// 生成缩略图并保存
            /// </summary>
            /// <param name="Width">缩略图的宽度</param>
            /// <param name="Height">缩略图的高度</param>
            /// <param name="imgformat">保存的图像格式</param>
            /// <returns>缩略图的Image对象</returns>
            public void SaveImage(int Width, int Height, ImageFormat imgformat)
            {
                srcImage = Image.FromFile(srcFileName);
                if (imgformat != ImageFormat.Gif && (srcImage.Width > Width) || (srcImage.Height > Height))
                {
                    Image img;
                    Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                    img = srcImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);
                    srcImage.Dispose();
                    img.Save(srcFileName1, imgformat);
                    img.Dispose();
                }
            }
    
        }
    }

     制作网络下载的略缩图

      /// <summary>
            /// 制作远程缩略图
            /// </summary>
            /// <param name="url">图片URL</param>
            /// <param name="newFileName">新图路径</param>
            /// <param name="maxWidth">最大宽度</param>
            /// <param name="maxHeight">最大高度</param>
            public static void MakeRemoteThumbnailImage(string url, string newFileName, int maxWidth, int maxHeight)
            {
                Stream stream = GetRemoteImage(url);
                if (stream == null)
                    return;
                Image original = Image.FromStream(stream);
                stream.Close();
                MakeThumbnailImage(original, newFileName, maxWidth, maxHeight);
            }
    
       /// <summary>
            /// 获取图片流
            /// </summary>
            /// <param name="url">图片URL</param>
            /// <returns></returns>
            private static Stream GetRemoteImage(string url)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Method = "GET";
                request.ContentLength = 0;
                request.Timeout = 20000;
                HttpWebResponse response = null;
    
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                    return response.GetResponseStream();
                }
                catch
                {
                    return null;
                }
            }
    
     /// <summary>
            /// 裁剪图片并保存
            /// </summary>
            /// <param name="fileName">源图路径(绝对路径)</param>
            /// <param name="newFileName">缩略图路径(绝对路径)</param>
            /// <param name="maxWidth">缩略图宽度</param>
            /// <param name="maxHeight">缩略图高度</param>
            /// <param name="cropWidth">裁剪宽度</param>
            /// <param name="cropHeight">裁剪高度</param>
            /// <param name="X">X轴</param>
            /// <param name="Y">Y轴</param>
            public static bool MakeThumbnailImage(string fileName, string newFileName, int maxWidth, int maxHeight, int cropWidth, int cropHeight, int X, int Y)
            {
                byte[] imageBytes = File.ReadAllBytes(fileName);
                Image originalImage = Image.FromStream(new System.IO.MemoryStream(imageBytes));
                Bitmap b = new Bitmap(cropWidth, cropHeight);
                try
                {
                    using (Graphics g = Graphics.FromImage(b))
                    {
                        //设置高质量插值法
                        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                        //设置高质量,低速度呈现平滑程度
                        g.SmoothingMode = SmoothingMode.AntiAlias;
                        g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                        //清空画布并以透明背景色填充
                        g.Clear(Color.Transparent);
                        //在指定位置并且按指定大小绘制原图片的指定部分
                        g.DrawImage(originalImage, new Rectangle(0, 0, cropWidth, cropHeight), X, Y, cropWidth, cropHeight, GraphicsUnit.Pixel);
                        Image displayImage = new Bitmap(b, maxWidth, maxHeight);
                        SaveImage(displayImage, newFileName, GetCodecInfo("image/" + GetFormat(newFileName).ToString().ToLower()));
                        return true;
                    }
                }
                catch (System.Exception e)
                {
                    throw e;
                }
                finally
                {
                    originalImage.Dispose();
                    b.Dispose();
                }
            }
    从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。
  • 相关阅读:
    机器学习概要
    Latex公式压缩
    MATLAB多项式运算
    利用MathType为公式编号并引用
    MATLAB符号对象与符号运算
    MATLAB矩阵运算
    MATLAB绘制函数图
    MATLAB程序控制语句
    MATLAB关系运算符和逻辑运算符
    Raspberry pi之wifi设置-3
  • 原文地址:https://www.cnblogs.com/feizianquan/p/9786678.html
Copyright © 2011-2022 走看看