生成缩略图是一个常见的需求,在asp.net中实现也比较简单。可以通过使用System.Drawing命名空间下的Image类来完成生成缩略图的功能。下面分步骤详细讲解如何实现:
步骤一:引用命名空间
using System.Drawing;
using System.Drawing.Imaging;
步骤二:加载图片
首先需要对要生成缩略图的图片进行加载,这里我们以“test.jpg”为例。
string filePath = Server.MapPath("~/images/test.jpg");
Image img = Image.FromFile(filePath);
步骤三:计算缩略图的尺寸
在生成缩略图之前需要根据图片的实际尺寸计算生成的缩略图的尺寸,一般情况下可以进行等比例缩放。
// 缩略图最大尺寸
int thumbnailWidth = 100;
int thumbnailHeight = 100;
// 计算缩略图的尺寸
int width = img.Width;
int height = img.Height;
if (width > height)
{
thumbnailHeight = (int)(height * ((double)thumbnailWidth / width));
}
else
{
thumbnailWidth = (int)(width * ((double)thumbnailHeight / height));
}
步骤四:生成缩略图
根据计算得到的缩略图的尺寸生成缩略图。需要注意的是,根据生成的缩略图尺寸,需要设置生成缩略图的质量。
// 生成缩略图
using (Image thumbnail = img.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero))
{
// 设置缩略图的质量
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 80L);
// 保存缩略图
using (var ms = new MemoryStream())
{
thumbnail.Save(ms, ImageFormat.Jpeg);
byte[] data = ms.ToArray();
File.WriteAllBytes(Server.MapPath("~/images/test_thumbnail.jpg"), data);
}
}
以上就是asp.net生成缩略图实现代码的完整攻略。
示例一:生成指定尺寸的缩略图
// 缩略图尺寸
int thumbnailWidth = 150;
int thumbnailHeight = 150;
// 加载图片
string filePath = Server.MapPath("~/images/test.jpg");
Image img = Image.FromFile(filePath);
// 计算缩略图的尺寸
int width = img.Width;
int height = img.Height;
if (width > height)
{
thumbnailHeight = (int)(height * ((double)thumbnailWidth / width));
}
else
{
thumbnailWidth = (int)(width * ((double)thumbnailHeight / height));
}
// 生成缩略图
using (Image thumbnail = img.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero))
{
// 设置缩略图的质量
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 80L);
// 保存缩略图
using (var ms = new MemoryStream())
{
thumbnail.Save(ms, ImageFormat.Jpeg);
byte[] data = ms.ToArray();
File.WriteAllBytes(Server.MapPath("~/images/test_thumbnail_150x150.jpg"), data);
}
}
示例二:生成固定质量的缩略图
// 缩略图尺寸
int thumbnailWidth = 200;
int thumbnailHeight = 200;
// 加载图片
string filePath = Server.MapPath("~/images/test.jpg");
Image img = Image.FromFile(filePath);
// 计算缩略图的尺寸
int width = img.Width;
int height = img.Height;
if (width > height)
{
thumbnailHeight = (int)(height * ((double)thumbnailWidth / width));
}
else
{
thumbnailWidth = (int)(width * ((double)thumbnailHeight / height));
}
// 生成缩略图
using (Image thumbnail = img.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero))
{
// 设置缩略图的质量
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 50L);
// 保存缩略图
using (var ms = new MemoryStream())
{
thumbnail.Save(ms, ImageFormat.Jpeg);
byte[] data = ms.ToArray();
File.WriteAllBytes(Server.MapPath("~/images/test_thumbnail_200x200.jpg"), data);
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net生成缩略图实现代码 - Python技术站