Исходный код C# для загрузки изображений и создания миниатюр в ASP.NET<FONT size=4><FONT size=4><FONT size=4>с использованием System;
использование System.Collections;
использование System.ComponentModel;
использование System.Data;
использование System.Drawing;
использование System.Web;
использование System.Web.SessionState;
использование System.Web.UI;
использование System.Web.UI.WebControls;
использование System.Web.UI.HtmlControls;
использование System.IO;
используя
пространство имен System.Drawing.Imaging eMeng.Exam
;
{
/// <сводка>
/// Краткое описание миниатюры.
/// </сводка>
Миниатюра публичного класса: System.Web.UI.Page
{
защищенный System.Web.UI.WebControls.Label Label1;
защищенный System.Web.UI.WebControls.Button Button1;
частный void Page_Load (отправитель объекта, System.EventArgs e)
{
//Поместите сюда пользовательский код для инициализации страницы
Label1.Text = "<h3>Легко попрактиковаться в ASP.NET?lt;/h3>";
Button1.Text = "Загрузить и отобразить миниатюры"
}
#region Код, созданный веб-дизайнером форм;
переопределить защищенную пустоту OnInit (EventArgs e)
{
//
// CODEGEN: этот вызов необходим разработчику веб-форм ASP.NET.
//
ИнициализироватьКомпонент();
base.OnInit(е);
}
/// <сводка>
/// Конструктор поддерживает необходимые методы — не используйте редактор кода для изменения
/// Содержимое этого метода.
/// </сводка>
частная пустота InitializeComponent()
{
this.Button1.Click += новый System.EventHandler(this.Button1_Click);
this.Load += новый System.EventHandler(this.Page_Load })
;
#endregion
Private void Button1_Click(отправитель объекта, System.EventArgs e)
{
HttpFileCollection MyFileColl = HttpContext.Current.Request.Files;
HttpPostedFile MyPostedFile = MyFileColl [0];
если (MyPostedFile.ContentType.ToString().ToLower().IndexOf("изображение") < 0)
{
Response.Write("Неверный графический формат.");
возвращаться;
}
GetThumbNail(MyPostedFile.FileName, 100, 100,
MyPostedFile.ContentType.ToString(), false, MyPostedFile.InputStream);
}
частный System.Drawing.Imaging.ImageFormat GetImageType(объект strContentType)
{
if ((strContentType.ToString().ToLower()) == "image/pjpeg")
{
вернуть System.Drawing.Imaging.ImageFormat.Jpeg;
}
иначе if ((strContentType.ToString().ToLower()) == "изображение/gif")
{
вернуть System.Drawing.Imaging.ImageFormat.Gif;
}
иначе if ((strContentType.ToString().ToLower()) == "image/bmp")
{
вернуть System.Drawing.Imaging.ImageFormat.Bmp;
}
иначе if ((strContentType.ToString().ToLower()) == "image/tiff")
{
вернуть System.Drawing.Imaging.ImageFormat.Tiff;
}
иначе if ((strContentType.ToString().ToLower()) == "image/x-icon")
{
вернуть System.Drawing.Imaging.ImageFormat.Icon;
}
иначе if ((strContentType.ToString().ToLower()) == "image/x-png")
{
вернуть System.Drawing.Imaging.ImageFormat.Png;
}
иначе if ((strContentType.ToString().ToLower()) == "image/x-emf")
{
вернуть System.Drawing.Imaging.ImageFormat.Emf;
}
иначе if ((strContentType.ToString().ToLower()) == "image/x-exif")
{
вернуть System.Drawing.Imaging.ImageFormat.Exif;
}
иначе if ((strContentType.ToString().ToLower()) == "image/x-wmf")
{
вернуть System.Drawing.Imaging.ImageFormat.Wmf;
}
еще
{
вернуть System.Drawing.Imaging.ImageFormat.MemoryBmp;
}
}
Private void GetThumbNail (строка strFileName, int iWidth, int iheight,
строка strContentType, bool blnGetFromFile, System.IO.Stream ImgStream)
{
System.Drawing.Image oImg;
если (blnGetFromFile)
{
oImg = System.Drawing.Image.FromFile(strFileName);
}
еще
{
oImg = System.Drawing.Image.FromStream(ImgStream);
}
oImg = oImg.GetThumbnailImage(iWidth, iheight, null, IntPtr.Zero);
строка strGuid = System.Guid.NewGuid().ToString().ToUpper();
строка strFileExt = strFileName.Substring(strFileName.LastIndexOf("."));
Response.ContentType = strContentType;
MemoryStream MemStream = новый MemoryStream();
oImg.Save(MemStream, GetImageType(strContentType));
MemStream.WriteTo(Response.OutputStream);
}
}
}
</FONT></FONT></FONT><FONT color=#ff0000 size=4></FONT><FONT size=4>Функция:
1. Загрузите файл изображения (JPG GIF PNG),
2. Сохранить по указанному пути (задать путь в web.config и сохранить файл в исходном формате),
3. И автоматически генерировать указанную ширину (задайте ширину в web.config)
4. и указанный формат (укажите формат миниатюр в web.config)
5. Миниатюра с теми же пропорциями, что и исходное изображение (высота миниатюры рассчитывается на основе ширины, ширины и высоты исходного изображения).
6. Может определить, существует ли файл уже
7. Если не переопределено, выдается ошибка
8. Если установлен флажок «Перезаписать исходное изображение», исходное изображение будет перезаписано.
9. В соответствии с требованиями на веб-форме можно установить более одного ввода файла и соответствующий флажок.
10. После загрузки файла имя файла, размер, байты и
11. Размер имени файла миниатюры.
12. Формат имени файла миниатюр: исходное изображение + «_thumb» + указанный формат, например: test.jpg_thumb.gif, для удобства управления.
-------------------
public void UploadFile (отправитель объекта, System.EventArgs e)
{
строка imgNameOnly, imgNameNoExt, imgExt;
строка imgThumbnail;
int errorNumber = 0;
System.Drawing.Image oriImg, newImg;
строка strFePicSavePath = ConfigurationSettings.AppSettings["FePicSavePath"].ToString();
строка strFePicThumbFormat = ConfigurationSettings.AppSettings["FePicThumbFormat"].ToString().ToLower();
int intFeThumbWidth = Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"]);
строка fileExt
picInfo = новый StringBuilder();
если (Page.IsValid)
{
for(int i = 0;i < Request.Files.Count; i++)
{
HttpPostedFile PostedFile = Request.Files[i];
fileExt = (System.IO.Path.GetExtension(PostedFile.FileName)).ToString().ToLower();
imgNameOnly = System.IO.Path.GetFileName(PostedFile.FileName);
if(fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".png")
{
if(System.IO.File.Exists(strFePicSavePath + imgNameOnly) && (checkboxlistRewrite.Items[i].Selected == false))
{
номер ошибки = номер ошибки + 1;
picInfo.Append("<b>Ошибка:</b>File("+ (i+1) +") " + imgNameOnly + " уже существует, измените имя файла<br/>" );
}
}
еще
{
номер ошибки = номер ошибки + 1;
picInfo.Append("<b>Ошибка:</b> file("+ (i+1) +") " + imgNameOnly + " расширение" + fileExt + " не разрешено<br/>" );
}
}
если (номер ошибки > 0)
{
picInfo.Append("<font color=red>Все операции не завершены, исправьте ошибки и продолжайте заново</font><br/>");
}
еще
{
for(int i = 0;i < Request.Files.Count; i++)
{
HttpPostedFile PostedFile = Request.Files[i];
imgNameOnly = System.IO.Path.GetFileName(PostedFile.FileName);
imgNameNoExt = System.IO.Path.GetFileNameWithoutExtension(PostedFile.FileName);
imgExt = System.IO.Path.GetExtension(PostedFile.FileName).ToString().ToLower();
oriImg = System.Drawing.Image.FromStream(PostedFile.InputStream);
newImg = oriImg.GetThumbnailImage(intFeThumbWidth, intFeThumbWidth * oriImg.Height/oriImg.Width,null,new System.IntPtr(0));
переключатель (imgExt)
{
//случай ".jpeg":
корпус ".jpg":
oriImg.Save(strFePicSavePath + imgNameOnly, System.Drawing.Imaging.ImageFormat.Jpeg);
перерыв;
случай ".gif":
oriImg.Save(strFePicSavePath + imgNameOnly, System.Drawing.Imaging.ImageFormat.Gif);
перерыв;
случай ".png":
oriImg.Save(strFePicSavePath + imgNameOnly, System.Drawing.Imaging.ImageFormat.Png);
перерыв;
}
//oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameNoExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
переключатель(strFePicThumbFormat)
{
//формат jpeg может получить файл наименьшего размера, а png — наибольшего размера
//случай "jpeg":
корпус «jpg»:
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
перерыв;
чехол "гифка":
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.gif",System.Drawing.Imaging.ImageFormat.Gif);
imgThumbnail = imgNameOnly + "_thumb.gif";
перерыв;
корпус "png":
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.png",System.Drawing.Imaging.ImageFormat.Png);
imgThumbnail = imgNameOnly + "_thumb.png";
перерыв;
по умолчанию:
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
перерыв
}//switch
picInfo.Append("<b>Имя файла:</b>" + imgNameOnly + " ( " + oriImg.Width + " x " + oriImg.Height + " ) " + PostedFile.ContentLength/1024 + "КБ<br/>");
picInfo.Append("<b>Имя миниатюры:</b>" + imgThumbnail + " ( " + newImg.Width + " x " + newImg.Height + " )<br/><br/>");
oriImg . Удалить();
newImg.Dispose()
}//для
picInfo.Append("<font color=red>Все операции выполнены успешно</font><br/>");
// if erronumber = 0
}
еще
{
picInfo.Append("<font color=red>Произошла ошибка, проверьте. Операция не удалась</font><br/>");
}
lblPicInfo.Text = picInfo.ToString()
}
;
</FONT>