首页 > 技术文章 > 图片批量修改大小

sdya 2015-07-15 15:22 原文

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Common;
using DBAccess;
using NPOI.OpenXml4Net.OPC.Internal;
using MyNewClass.Common;
using gigadeExcel.Comment;

namespace EmsDepRelation
{
    class Program
    {

        static string connectionString;//獲取鏈接字符串
        static IDBAccess _dbAccess;
        private static readonly string PicturefilePath = System.Configuration.ConfigurationManager.AppSettings["PicfilePath"].ToString();
        private static readonly string PicturesuccessPath = System.Configuration.ConfigurationManager.AppSettings["SuccessPicfilePath"].ToString();
        private static readonly string PictureFailPath = System.Configuration.ConfigurationManager.AppSettings["FailPicfilePath"].ToString();//圖片不符合合適
        private static readonly string GroupCode = System.Configuration.ConfigurationManager.AppSettings["GroupCode"].ToString();
        private static readonly string EmailTile = System.Configuration.ConfigurationManager.AppSettings["EmailTitle"].ToString();
        static void Main(string[] args)
        {
            ConfigHelper fighelper = new ConfigHelper();
            connectionString = fighelper.GetConnString();
            _dbAccess = DBFactory.getDBAccess(DBType.MySql, connectionString);
            try
            {
                if (string.IsNullOrEmpty(PicturefilePath) || string.IsNullOrEmpty(PicturesuccessPath))
                {
                    Console.WriteLine("請檢查配置文件中PicturefilePath,PicturesuccessPath是否存在");
                }
                else
                {
                    #region 如果路徑不存在則創建
                    if (!Directory.Exists(PicturefilePath))
                    {
                        Console.WriteLine("請確定圖片文件是否存在在路徑" + PicturefilePath + "中!");
                        Directory.CreateDirectory(PicturefilePath);
                    }
                    if (!Directory.Exists(PicturefilePath))
                    {
                        Directory.CreateDirectory(PicturefilePath);
                    }
                    if (!Directory.Exists(PicturesuccessPath))
                    {
                        Directory.CreateDirectory(PicturesuccessPath);
                    }
                    if (!Directory.Exists(PictureFailPath))
                    {
                        Directory.CreateDirectory(PictureFailPath);
                    }
                    #endregion
                    DirectoryInfo dir = new DirectoryInfo(PicturefilePath);
                    FileInfo[] files = dir.GetFiles("*.jpg");
                    if (files.Count() >= 1)
                    {
                        foreach (FileInfo file in files)
                        {
                            string tempname = PicturesuccessPath;
                            string path = file.Name;//文件全名稱
                            string fullpath = file.FullName;
                            GetThumbnail(PicturefilePath + path, PictureFailPath, 1000, 1000);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("圖片處理功能:Program/Main" + ex.Message);
                Console.ReadKey();
            }
        }
        /// <summary>
        /// 改變圖片信息
        /// </summary>
        /// <param name="serverImagePath">要改變大小的圖片(路徑名稱+圖片名稱)</param>
        /// <param name="thumbnailImagePath">改變后的圖片(路徑名稱+圖片名稱)</param>
        /// <param name="width">改變后的寬度</param>
        /// <param name="height">改變后的高度</param>
        static void GetThumbnail(string serverImagePath, string thumbnailImagePath, int width, int height)
        {
            System.Drawing.Image serverImage = System.Drawing.Image.FromFile(serverImagePath);
            //画板大小
            int towidth = width;
            int toheight = height;
            //缩略图矩形框的像素点
            int x = 0;
            int y = 0;
            int ow = serverImage.Width;
            int oh = serverImage.Height;
            if (ow > oh)
            {
                toheight = serverImage.Height * width / serverImage.Width;
            }
            else
            {
                towidth = serverImage.Width * height / serverImage.Height;
            }
            //新建一个bmp图片
            System.Drawing.Image bm = new System.Drawing.Bitmap(width, height);
            //新建一个画板
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);
            //设置高质量插值法
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
            //设置高质量,低速度呈现平滑程度
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            //清空画布并以透明背景色填充
            g.Clear(System.Drawing.Color.White);
            //在指定位置并且按指定大小绘制原图片的指定部分
            g.DrawImage(serverImage, new System.Drawing.Rectangle((width - towidth) / 2, (height - toheight) / 2, towidth, toheight),
                0, 0, ow, oh,
                System.Drawing.GraphicsUnit.Pixel);
            try
            {
                //以jpg格式保存缩略图
                bm.Save(thumbnailImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                serverImage.Dispose();
                bm.Dispose();
                g.Dispose();
            }
        }

    }
}

推荐阅读