using System;
using System.IO;
using System.Web;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Collections;
/// <summary>
/// Summary description for Fileop
/// 搜集编写者losingrose
/// QQ:303864496
/// MSN:losingrose@21cn.com
/// http://losingrose.cnblogs.com
/// </summary>
public static class MyFileOp
{
//生成 (年,月,日,时,分,秒)+随机数的文件名
private static string names()
{
Random rm = new Random(System.Environment.TickCount);
return System.DateTime.Now.ToString("yyyyMMddhhmmss") + rm.Next(1000, 9999).ToString();
}
private static bool ThumbnailCallback()
{
return false;
}
/// <summary>
/// 生成缩略图,返回图片的虚拟地址
/// </summary>
/// <param name="file">生成缩略图片</param>
/// <param name="visualpath">设置的服务器文件上传虚拟路径用于替换掉无用的物理路径头</param>
/// <param name="mappath">要上传到的服务器虚拟路径,请使用相对路径</param>
/// <param name="newwidth">缩略图宽度</param>
/// <param name="newheight">缩略图高度</param>
public static string MinimageFixSize(string file, string visualpath, string mappath, int newwidth, int newheight)
{
//try
//{
//定义Image对象变量
Image image = Image.FromFile(HttpContext.Current.Server.MapPath(file));
//下面根据原有的图片尺寸计算要生成的图片尺寸
int width = image.Width;
int height = image.Height;
int nwidth = newwidth;
int nheight = newheight;
if (width > height)
{
nheight = nwidth * height / width;
}
else
{
nwidth = nheight * width / height;
}
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
Image newimage = image.GetThumbnailImage(nwidth, nheight, callb, new System.IntPtr());
Bitmap bmWatermark = new Bitmap(newwidth, newheight);
bmWatermark.SetResolution(bmWatermark.HorizontalResolution, bmWatermark.VerticalResolution);
Graphics gw = Graphics.FromImage(bmWatermark);
gw.Clear(Color.White);
int xPosOfWm = ((bmWatermark.Width - newimage.Width) / 2);
int yPosOfWm = ((bmWatermark.Height - newimage.Height) / 2);
gw.DrawImage(newimage,new Rectangle(xPosOfWm, yPosOfWm, newimage.Width, newimage.Height),0,0,newimage.Width,newimage.Height, GraphicsUnit.Pixel);
string name = Path.GetFileName(file);
string newfile = HttpContext.Current.Server.MapPath(mappath);
if (!Directory.Exists(newfile))
Directory.CreateDirectory(newfile);
newfile += Path.DirectorySeparatorChar + name;
bmWatermark.Save(newfile);
image.Dispose();
newimage.Dispose();
gw.Dispose();
bmWatermark.Dispose();
return HttpContext.Current.Server.MapPath(mappath).Replace(HttpContext.Current.Server.MapPath(visualpath), "") + Path.DirectorySeparatorChar + name;
//}
//catch (Exception e)
//{
// throw e;
//}
}
}
实际效果如图(比例为200*210,边框是为了体现大小,非图片所带):


浙公网安备 33010602011771号