#region 图片切割
/// <summary>
/// 图片切割(用来做缩略图)
/// </summary>
/// <param name="fileImg">要切割的图片(源图)</param>
/// <param name="qieWidth">切割宽度</param>
/// <param name="qieHeight">切割高度</param>
/// <param name="Suffix">图片后缀名,默认为jpg(一般不改)</param>
/// <param name="CunFile">图片保存路径,默认为image(一般不改)</param>
/// <returns></returns>
public static string NewsPic(string fileImg, int qieWidth, int qieHeight, string Suffix,string CunFile)
{
if (CunFile == "")
{
CunFile = "\\image\\";
}
else
{
CunFile += "\\";
}
if (!Directory.Exists(HttpContext.Current.Server.MapPath(CunFile)))
{
Directory.CreateDirectory(HttpContext.Current.Server.MapPath(CunFile));
}
System.Drawing.Image image = System.Drawing.Image.FromFile(fileImg);
//判断切割的宽或高是否为空和大于源图宽高
if (qieWidth == 0 || qieWidth > image.Width)
{
qieWidth = image.Width / 2;
}
if (qieHeight == 0 || qieHeight > image.Height)
{
qieHeight = image.Height / 2;
}
//Format24bppRgb指定像素每个为24位,清晰效果好
Bitmap bitmap = new Bitmap(qieWidth, qieHeight, PixelFormat.Format24bppRgb);
//设置图片的分辩率
bitmap.SetResolution(80, 80);
//从指定的图片创建新的图片(画图)
Graphics g = Graphics.FromImage(bitmap);
/*---------------------------------------------------------*/
/*
* 消除齿巨的呈现
* AntiAlias 指定消除锯齿的呈现。
* Default 指定默认模式。
* HighQuality 指定高质量、低速度呈现。
* HighSpeed 指定高速度、低质量呈现。
* Invalid 指定一个无效模式。
* None 指定不消除锯齿。
*/
g.SmoothingMode = SmoothingMode.AntiAlias;
/*---------------------------------------------------------*/
//插补模式确定如何计算两个终结点之间的中间值
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//取得或設定值,指定在這個 Graphics 的呈現期間如何位移像素,高
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
/*---------------------------------------------------------*/
/*
* 开始绘图,使用Rectangle函数绘图
* 在指定位置并且按指定大小绘制指定的 Image 的指定部分
* image.Width取源图宽,在源图整体上缩小图
* image.Height取源图高,在源图整体上缩小图
*/
g.DrawImage(image, new Rectangle(0, 0, qieWidth, qieHeight), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
/*---------------------------------------------------------*/
string fName = string.Empty;//路径
string picName = string.Empty;//图片名
if (Suffix != "")
{
picName = Guid.NewGuid().ToString() + "." + Suffix;
fName = HttpContext.Current.Server.MapPath(CunFile + "\\") + picName;
}
else
{
picName = Guid.NewGuid().ToString() + ".jpg";
fName = HttpContext.Current.Server.MapPath(CunFile + "\\") + picName;
}
try
{
switch (Suffix)
{
case "jpg":
bitmap.Save(fName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case "png":
bitmap.Save(fName, System.Drawing.Imaging.ImageFormat.Png);
break;
case "jpeg":
bitmap.Save(fName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case "gif":
bitmap.Save(fName, System.Drawing.Imaging.ImageFormat.Gif);
break;
case "bmp":
bitmap.Save(fName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
default:
bitmap.Save(fName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
}
//绘完之后清除
image.Dispose();
g.Dispose();
bitmap.Dispose();
return picName;
}
catch
{
return "";
}
}
#endregion
用这个就行了,可以根据WEB的需求来切割自己所想要的缩小略图,
程序写好了就行了啊
以前看过一些国外的PHP网站都是 直接传地址和图片大小到一个动态的 .PHP文件处理
ASP.NET ,也是一样弄一个 .ashx 的处理,接受传递过来的 图片路径和图片大小格式 如 GetImg..ashx?imgurl=kkk.jpg&imgsize=120*120
GetImg..ashx 接受,
先判断是否存在:kk.jpg,
然后判断缩略图 文件 如: kkk-120-120.jpg - 存在,即输出 kkk-120-120.jpg
没有就生成 kkk-120-120.jpg 的 缩略图