System を使用して、ASP.NET<FONT size=4><FONT size=4><FONT size=4>で画像をアップロードし、サムネイルを生成するための C# ソース コード。
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
名前空間
を使用します。
{
/// <概要>
/// サムネイルの概要説明。
/// </概要>
パブリック クラス サムネイル : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(オブジェクト送信者、System.EventArgs e)
{
//ここにユーザーコードを入力してページを初期化します
Label1.Text = "<h3>ASP.NET で簡単に実践できますか?lt;/h3>";
Button1.Text = "サムネイルをアップロードして表示"
}
#region Web フォーム デザイナーによって生成されたコード
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: この呼び出しは、ASP.NET Web フォーム デザイナーに必要です。
//
InitializeComponent();
Base.OnInit(e);
}
/// <概要>
/// デザイナーは必要なメソッドをサポートしています - 変更にはコード エディターを使用しないでください
/// このメソッドの内容。
/// </概要>
private void InitializeComponent()
{
this.Button1.Click += new 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];
if (MyPostedFile.ContentType.ToString().ToLower().IndexOf("image") < 0)
{
Response.Write("無効なグラフィック形式です。");
戻る;
}
GetThumbNail(MyPostedFile.ファイル名, 100, 100,
MyPostedFile.ContentType.ToString()、false、MyPostedFile.InputStream);
}
プライベート System.Drawing.Imaging.ImageFormat GetImageType(object strContentType)
{
if ((strContentType.ToString().ToLower()) == "画像/pjpeg")
{
System.Drawing.Imaging.ImageFormat.Jpeg を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/gif")
{
System.Drawing.Imaging.ImageFormat.Gif を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/bmp")
{
System.Drawing.Imaging.ImageFormat.Bmp を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/tiff")
{
System.Drawing.Imaging.ImageFormat.Tiff を返します。
}
else if ((strContentType.ToString().ToLower()) == "画像/x-icon")
{
System.Drawing.Imaging.ImageFormat.Icon を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/x-png")
{
System.Drawing.Imaging.ImageFormat.Png を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/x-emf")
{
System.Drawing.Imaging.ImageFormat.Emf を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/x-exif")
{
System.Drawing.Imaging.ImageFormat.Exif を返します。
}
else if ((strContentType.ToString().ToLower()) == "image/x-wmf")
{
System.Drawing.Imaging.ImageFormat.Wmf を返します。
}
それ以外
{
System.Drawing.Imaging.ImageFormat.MemoryBmp を返します。
}
}
private void GetThumbNail(string strFileName, int iWidth, int iheight,
文字列 strContentType、ブール blnGetFromFile、System.IO.Stream ImgStream)
{
System.Drawing.Image oImg
if (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();
string 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.要件に応じて、Web フォーム上で複数のファイル入力と対応するチェックボックスを設定できます。
10.ファイルがアップロードされると、ファイル名、サイズ、バイト数、
11.サムネイルのファイル名サイズ。
12.サムネイルのファイル名の形式: 元の画像 + 「_thumb.」 + 指定された形式 (例: test.jpg_thumb.gif) で管理しやすくなります。
-------------------
public void UploadFile(オブジェクト送信者, System.EventArgs e)
{
文字列imgNameOnly、imgNameNoExt、imgExt;
文字列 imgThumbnail;
int エラー番号 = 0;
System.Drawing.Image oriImg、newImg;
string strFePicSavePath = ConfigurationSettings.AppSettings["FePicSavePath"].ToString();
string strFePicThumbFormat = ConfigurationSettings.AppSettings["FePicThumbFormat"].ToString().ToLower();
int intFeThumbWidth = Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"]);
文字列ファイルExt
StringBuilder picInfo = new StringBuilder()
;
{
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/>" );
if
(エラー番号 > 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)
switch(strFePicThumbFormat)
;
{
//jpeg 形式が最小のファイル サイズを取得でき、png 形式が最大のファイル サイズになります
//ケース "jpeg":
「jpg」の場合:
newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail = imgNameOnly + "_thumb.jpg";
壊す;
ケース「gif」:
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";
Break;
}//switch
picInfo.Append("<b>ファイル名:</b>" + imgNameOnly + " ( " + oriImg.Width + " x " + oriImg.Height + " ) " + PostedFile.ContentLength/1024 + "KB<br/>");
picInfo.Append("<b>サムネイル名:</b>" + imgThumbnail + " ( " + newImg.Width + " x " + newImg.Height + " )<br/><br/>")
;破棄();
newImg.Dispose();
}//
picInfo.Append("<font color=red>すべての操作が成功しました</font><br/>");
erronumber = 0 の場合
}
それ以外
{
picInfo.Append("<font color=red>エラーがあります。確認してください。操作は成功しませんでした。</font><br/>")
}
lblPicInfo.Text = picInfo.ToString()
;
</FONT>