asp.net上传图片自动生成索引图片 (缩略图 index picture or thumbnail picture)
Posted on 2008-04-16 14:55 阿锦 阅读(820) 评论(0) 收藏 举报
页面上经常有点击一张小图片查看大图片的情况,那么小图片怎么来的呢?
我目前的项目就有这种情况,但“生成”小图片的做法令人难以接受,做法是做一张大图片的缩小版,和大图片一起上传,人家不满意了:“我上传一张图片同时还要做一张小的?”。的确,不是每个人都有这个耐心,也并不是每个人都是图形处理能手。
下面将我的做法show给大家:
页面上有个名为pictureFile的文件上传控件,一个名为btnSubmit 按钮.下面帖代码:
protected void btnSubmit_Click(object sender, System.EventArgs e)
{
byte[] pic= null;
System.Drawing.Image img;
img = System.Drawing.Image.FromStream(pictureFile.PostedFile.InputStream);
if (img.Width > 100 || img.Height > 100)//小图片要求<=100*100px
{
pic= GetThumbnailImage(img);
}
else
{
pic= new byte[pictureFile.PostedFile.InputStream.Length];
pictureFile.PostedFile.InputStream.Read(pic, 0, (int)pictureFile.PostedFile.InputStream.Length);
}
//接下来就可以将pic保存到数据库的图片字段
}
下面是生成<=100*100px图片的函数
private byte[] GetThumbnailImage(System.Drawing.Image img)
{
byte[] imgByte;
float iScale = img.Height > img.Width ? (float)img.Height / 100 :(float)img.Width / 100;
img = img.GetThumbnailImage((int)(img.Width/iScale),(int)(img.Height/iScale), null, IntPtr.Zero);
MemoryStream memStream = new MemoryStream();
img.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg);
memStream.Flush();
imgByte = memStream.ToArray();
return imgByte;
}
我目前的项目就有这种情况,但“生成”小图片的做法令人难以接受,做法是做一张大图片的缩小版,和大图片一起上传,人家不满意了:“我上传一张图片同时还要做一张小的?”。的确,不是每个人都有这个耐心,也并不是每个人都是图形处理能手。
下面将我的做法show给大家:
页面上有个名为pictureFile的文件上传控件,一个名为btnSubmit 按钮.下面帖代码:
protected void btnSubmit_Click(object sender, System.EventArgs e)
{byte[] pic= null;
System.Drawing.Image img;img = System.Drawing.Image.FromStream(pictureFile.PostedFile.InputStream);
if (img.Width > 100 || img.Height > 100)//小图片要求<=100*100px
{
pic= GetThumbnailImage(img);
}
else
{
pic= new byte[pictureFile.PostedFile.InputStream.Length];
pictureFile.PostedFile.InputStream.Read(pic, 0, (int)pictureFile.PostedFile.InputStream.Length);
}
//接下来就可以将pic保存到数据库的图片字段
}下面是生成<=100*100px图片的函数
private byte[] GetThumbnailImage(System.Drawing.Image img)
{
byte[] imgByte;
float iScale = img.Height > img.Width ? (float)img.Height / 100 :(float)img.Width / 100;
img = img.GetThumbnailImage((int)(img.Width/iScale),(int)(img.Height/iScale), null, IntPtr.Zero);
MemoryStream memStream = new MemoryStream();
img.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg);
memStream.Flush();
imgByte = memStream.ToArray();
return imgByte;
}

浙公网安备 33010602011771号