上传图片并生成略缩图

原创 2007年09月19日 13:24:00

参数说明
FileBox:上传表单中的表单名
SavePath:保存路径
ThumbnailWidth:略缩图宽
ThumbnailHeight:略缩图高
FilePath:文件保存路径(输出参数)
FileName:文件名称(输出参数)
LastError:(输出错误)

public static bool UploadImages(System.Web.UI.HtmlControls.HtmlInputFile FileBox,string SavePath,Int32 ThumbnailWidth,Int32 ThumbnailHeight,out String FilePath,out String FileName,out string LastError)
{
 DateTime datTime=System.DateTime.Now;
 String strTemp;
 string strFileName = FileBox.PostedFile.FileName;
 bool blnResult;
 LastError="";
 System.Drawing.Image xImage;
 System.Drawing.Bitmap xBitmap;
 int PhotoHeight,PhotoWidth;
 string BasePath=System.Web.HttpContext.Current.Server.MapPath("../");
 Rectangle NewPhoto;
 System.Drawing.Imaging.ImageFormat xObject;
 string Extension="";
 FileName="";
 FilePath="";

 try
 {
  if(strFileName=="")
  {
   LastError="请点击浏览选择要上传的文件!";
   return false;
  }
  if(Convert.ToDecimal(FileBox.PostedFile.ContentLength)<= 2000000 &&Convert.ToDecimal(FileBox.PostedFile.ContentLength)>1500)
  {
   //查看扩展名是否合法
   Extension=Path.GetExtension(strFileName);
   Extension=Extension.ToLower();
   if(Extension==".gif" || Extension==".jpg" || Extension==".jpeg" || Extension==".bmp")
   {
    switch(Extension)
    {
     case ".gif":
      xObject=System.Drawing.Imaging.ImageFormat.Gif;
      break;
     case ".bmp":
      xObject=System.Drawing.Imaging.ImageFormat.Bmp;
      break;
     default:
      xObject=System.Drawing.Imaging.ImageFormat.Jpeg;

      break;
    }
   }
   else
   {
    LastError="上传的文件不是有效的图片文件,请上传格式为:.gif.jpg.bmp的文件!";
    return false;
   }
   //-----------------------------
   //生成保存的文件路径及文件名
   //-----------------------------
   strTemp = datTime.ToShortDateString().Replace( "-", "");
   FileName = datTime.ToLongTimeString().Replace(":","")+ Extension;
   FilePath = SavePath + strTemp + "/";
   Friendlib.Function.CreateDirectory(BasePath + FilePath);
   //保存大图
   xImage=System.Drawing.Bitmap.FromStream(FileBox.PostedFile.InputStream);

   xImage.Save(BasePath+FilePath+FileName);
   xImage.Dispose();
   //-----------------------------
   //开始生成缩略图
   //-----------------------------
   xBitmap=new Bitmap(BasePath+FilePath+FileName);//------------------

   PhotoHeight=xBitmap.Height;
   PhotoWidth=xBitmap.Width;
   // //判断图片的形状
   if(Convert.ToDecimal(PhotoHeight)/Convert.ToDecimal(PhotoWidth)>Convert.ToDecimal(ThumbnailHeight)/Convert.ToDecimal(ThumbnailWidth))//高有余
   {
    PhotoHeight=Convert.ToInt16((Convert.ToDecimal(ThumbnailHeight)/Convert.ToDecimal(ThumbnailWidth))*Convert.ToDecimal(PhotoWidth));
    NewPhoto=new Rectangle(0,0,PhotoWidth,PhotoHeight);
   }
   else if(Convert.ToDecimal(PhotoHeight)/Convert.ToDecimal(PhotoWidth)<Convert.ToDecimal(ThumbnailHeight)/Convert.ToDecimal(ThumbnailWidth))
   {
    PhotoWidth=Convert.ToInt16((Convert.ToDecimal(ThumbnailWidth)/Convert.ToDecimal(ThumbnailHeight))*Convert.ToDecimal(PhotoHeight));
    NewPhoto=new
     Rectangle(Convert.ToInt16((Convert.ToDecimal(xBitmap.Width)-Convert.ToDecimal(PhotoWidth))/2),0,PhotoWidth,PhotoHeight);
   }
   else
   {
    NewPhoto= newRectangle(0,0,PhotoWidth,PhotoHeight); < BR> }
                   System.Drawing.Image myBitmap;
    myBitmap=xBitmap.Clone(NewPhoto,System.Drawing.Imaging.PixelFormat.DontCare);
    System.Drawing.Image.GetThumbnailImageAbort myCallback = new
     System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
    System.Drawing.Image myThumbnail =
     myBitmap.GetThumbnailImage(ThumbnailWidth,ThumbnailHeight, myCallback,
     IntPtr.Zero); myThumbnail.Save(BasePath + FilePath +"s"+FileName,xObject);
    myThumbnail.Dispose(); myBitmap.Dispose(); xBitmap.Dispose(); return true; }
  else
  {
   blnResult=false; LastError="不能上传大于2M及小于1.5K的图片!";
  }
  }< BR>
    catch (Exception ex)
         {
          throw new System.Exception((ex.Message + ("/r/n" + ex.StackTrace)));
         }
  return blnResult;
 }
private static bool ThumbnailCallback() { return false; }
 

相关文章推荐

上传图片生成略缩图“最佳解决”

using System;using System.IO;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawin...

Spring MVC上传图片,Java二进制图片写入数据库,生成略缩图

Spring MVC上传图片,Java二进制图片写入数据库,生成略缩图 背景描述:最近做到一个项目,有个商品登记功能。登记的信息包括:基本信息若干(文字信息);图片信息,要求将图片保存到...

C#也能PS图片,还能为网站Ajax上传图片同时生成微缩图(附Demo)

====================================================== 注:本文源代码点此下载 =============================...

图片生成指定大小的略缩图(只支持JPG)

import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;public class Sc...
  • zhctt
  • zhctt
  • 2011年04月29日 12:41
  • 291

Android开发之--读取文件夹下图片生成略缩图并点击显示大图

这是一个简单的Demo,目的是:读取文件夹下图片生成略缩图并点击显示大图。 先新建一个工程,创建一个ThumbnailsWindows的类,继承LinearLayout。代码如下: packa...

如何获取手机内存视频(图片)略缩图

最近在研究MediaRecord因为要用ListView显示手机内部录得视频文件信息 主要要显示:略缩图,文件名字,文件时长,文件内存大小,也特意去琢磨了好一阵,主要我还是个新手,所以代码比较肤浅,...

如何生成网页的略缩图?

1. 关键代码: using System; using System.Drawing; using System.Windows.Forms; using System.Threading; ...

java自动生成略缩图

当你要做一个图库的项目时,对图片大小、像素的控制是首先需要解决的难题。       本篇文章,在前辈的经验基础上,分别对单图生成略缩图和批量生成略缩图做个小结。               一、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:上传图片并生成略缩图
举报原因:
原因补充:

(最多只允许输入30个字)