Создание миниатюр при разработке веб-сайта является очень распространенной и практичной функцией. Раньше этого можно было достичь только с помощью COM-компонентов в ASP, но теперь это можно легко реализовать в .NET, используя мощную библиотеку классов. Полный код опубликован ниже (с подробными примечаниями), обратитесь к некоторым статьям в Интернете и контенту, связанному с .net sdk. Все четыре метода генерации используются для загрузки изображений в QQROOM Network Home.
/// <сводка>
/// Генерируем миниатюры
/// сводка>
/// Путь к исходному изображению (физический путь)
/// Путь к миниатюре (физический путь)
/// Ширина миниатюры
/// Высота миниатюры
/// Как создавать миниатюры
public static void MakeThumbnail(строка originalImagePath, строка миниатюраPath, ширина int, высота int, строковый режим)
{
Исходное изображение изображения = Image.FromFile(originalImagePath);
int ширина = ширина;
int высота = высота;
интервал х = 0;
интервал у = 0;
int ow = originalImage.Width;
int oh = originalImage.Height
переключатель (режим);
{
case "HW"://Укажите масштабирование высоты и ширины (возможно, деформировано)
перерыв;
case "W"://Укажите ширину и высоту пропорционально
toheight = originalImage.Height * ширина/originalImage.Width;
перерыв;
case "H"://Укажите высоту и ширину пропорционально
towidth = originalImage.Width * высота/originalImage.Height;
перерыв;
case "Cut"://Укажите высоту и ширину обрезки (без деформации)
if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
{
ох = оригинальное изображение.Высота;
ow = originalImage.Height*towidth/toheight;
у = 0;
x = (originalImage.Width - ow)/2;
}
еще
{
ow = оригинальноеизображение.Ширина;
oh = originalImage.Width*height/towidth;
х = 0;
y = (originalImage.Height - oh)/2;
}
перерыв;
по умолчанию :
перерыв;
}
//Создаем новое изображение в формате BMP
Растровое изображение = new System.Drawing.Bitmap(towidth,toheight);
//Создаем новую доску для рисования;
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//Устанавливаем метод интерполяции высокого качества
;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
//Устанавливаем высокое качество и низкую скорость, чтобы показать плавность;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
//Очистка холста и заливка его прозрачным цветом фона;
g.Clear(Color.Transparent);
//Рисуем указанную часть исходного изображения в указанной позиции и размере;
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
новый прямоугольник (x, y, ow, oh),
GraphicsUnit.Пиксель
);
{
//Сохраняем миниатюру в формате jpg
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
улов (System.Exception е)
{
бросить е;
}
окончательно
{
исходноеИзображение.Dispose();
растровое изображение.Dispose();
г.Dispose();
}
}
Ключевой метод Graphics.DrawImage см. в ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm
http://www.cnblogs.com/jialine/archive/2006/09/15. /505459.html