ASP.NET创建缩略图

来源:互联网 发布:安徽邮政网络培训学院 编辑:程序博客网 时间:2024/05/05 04:05

在学习过程中发现如果要上传的照片很大的话,速度会很慢,所以采用了在上传照片时同时上传缩略图的方式,这样就可以既不影响多个图片的浏览,又不影响查看具体的图片。

需要用到的命名空间:

using System.Drawing;
using System.IO;
using System.Drawing.Imaging;

 

#region 保存上传文件,方法名:UploadSave(string asFilePath, FileUpload asFileUpload)

/// <summary>
///  保存上传文件
/// </summary>
/// <param name="asFilePath">保存到的服务器路径</param>
/// <param name="asFileUpload">上传控件</param>
/// <returns></returns>
public int UploadSave(string asFilePath, FileUpload asFileUpload)
{
    int Fhz,Fhz1,Fhz2;
    string FilePath = asFileUpload.PostedFile.FileName.ToString();
    FileInfo myFileInfo = new FileInfo(FilePath);
    string PictureName = myFileInfo.Name.ToString();
    string FileExtends = null;
    if (PictureName != null)
    {
        FileExtends = GetFileExtends(PictureName);
        string BigPictureName = System.DateTime.Now.DayOfYear.ToString() + asFileUpload.PostedFile.ContentLength.ToString() + "." + FileExtends.ToString();
        string SmallPictureName = "S_" + BigPictureName.ToString();
        string BigPicturePath = asFilePath + BigPictureName.ToString();
        string SmallPicturePath = asFilePath + SmallPictureName.ToString();

        Fhz1 = PictureUpload(BigPicturePath, asFileUpload, FileExtends);
        Fhz2 = Miniature(FilePath, SmallPicturePath, 130, 130);
        Fhz = Fhz1 + Fhz2;
    }
    else
    {
        Fhz = 0;
    }
    return Fhz;
}
#endregion

 

#region 上传原图,方法名:PictureUpload(string asPicturePath, FileUpload asFileUpload, string asFileExtends)

/// <summary>
/// 上传原图
/// </summary>
/// <param name="asPicturePath">保存到的服务器路径</param>
/// <param name="asFileUpload">上传控件</param>
/// <param name="asFileExtends">文件扩展名</param>
/// <returns></returns>
protected int PictureUpload(string asPicturePath, FileUpload asFileUpload, string asFileExtends)
{
    int fhz = 0;
    if (CheckFileExtends(asFileExtends))
    {
        try
        {
            asFileUpload.SaveAs(asPicturePath);
            fhz = 1;
        }
        catch
        {
            fhz = 0;
        }
    }
    else
    {
        return fhz = 0;
    }
    return fhz;
}
#endregion

 

#region 创建并上传缩略图,方法名:Miniature(string asBigPicturePath, string sPicturePath, int asPictureWidth, int asPictureHeight)

/// <summary>
/// 创建并上传缩略图
/// </summary>
/// <param name="asBigPicturePath">图片在本机的绝对路径</param>
/// <param name="sPicturePath">保存到的服务器路径</param>
/// <param name="asPictureWidth">缩略图宽度</param>
/// <param name="asPictureHeight">缩略图高度</param>
/// <returns></returns>
protected int Miniature(string asBigPicturePath, string sPicturePath, int asPictureWidth, int asPictureHeight)
{
    System.Drawing.Image fImage = System.Drawing.Image.FromFile(asBigPicturePath);
    int picturewidth = asPictureWidth;
    int pictureheight = asPictureHeight;
    System.Drawing.Image sImage = new System.Drawing.Bitmap(picturewidth, pictureheight);
    System.Drawing.Graphics myGraphics = System.Drawing.Graphics.FromImage(sImage);
    myGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    myGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    myGraphics.Clear(System.Drawing.Color.Transparent);
    myGraphics.DrawImage(fImage, new System.Drawing.Rectangle(0, 0, picturewidth, pictureheight), new System.Drawing.Rectangle(0, 0, fImage.Width, fImage.Height), System.Drawing.GraphicsUnit.Pixel);
    try
    {
        sImage.Save(sPicturePath, System.Drawing.Imaging.ImageFormat.Jpeg);
        return 1;
    }
    catch
    {
        return 0;
    }
    finally
    {
        fImage.Dispose();
        sImage.Dispose();
    }
}
#endregion

其中还要用到的方法:

#region 上传文件的类型枚举,方法名:FileType
public enum FileType
{
    jpg, gif, bmp, png, swf
}
#endregion

#region 创建文件保存,方法名:CreateFolder(string FolderPathName)
public static void CreateFolder(string FolderPathName)
{
    if (FolderPathName.Trim().Length > 0)
    {
        try
        {
            string CreatePath = System.Web.HttpContext.Current.Server.MapPath(FolderPathName).ToString();
            if (Directory.Exists(CreatePath) == false)
            {
                Directory.CreateDirectory(CreatePath);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}
#endregion

#region 取得文件扩展名,方法名:GetFileExtends(string FileName)
protected static string GetFileExtends(string FileName)
{
    string Extends = null;
    if (FileName.IndexOf('.') > 0)
    {
        string[] FileNames = FileName.Split('.');
        Extends = FileNames[FileNames.Length - 1].ToString();
    }
    return Extends;
}
#endregion

#region 检查上传文件的合法性,方法名:CheckFileExtends()
protected static bool CheckFileExtends(string FileExtends)
{
    bool status = false;
    FileExtends = FileExtends.ToLower();
    string[] FileExtendses = Enum.GetNames(typeof(FileType));
    for (int i = 0; i < FileExtendses.Length; i++)
    {
        if (FileExtendses[i].ToLower() == FileExtends)
        {
            status = true;
            break;
        }
    }
    return status;
}
#endregion

                                                                                                                                                           --其中部分摘自互联网

原创粉丝点击