图片批量修改大小
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();
}
}
}
}