karim orooji
شنبه 01 آبان 1389, 10:28 صبح
Resizing Image(ذخیره عکس با اندازه دلخواه)
کدی که نوشتم مربوط می شه به ذخیره کردن عکس های آپلود شده در اندازه های کوچکتر.
البته این روش برای درست کردن Thumbnail هم میتونه مفید باشه،به طوریکه توی یه صفخه aspx با نشون دادن عکس های کوچک شده (آپلود شده) و link کردن اونا به عکس های بزرگتر میتونید یه Thumbnail درست کنید.
من این برنامه رو با ASP.NET 2.0 نوشتم و از MasterPage هم در اون استفاده کردم.
البته من برای آپلود عکس از یه کنترل html استفاده کردم،ولی شما می تونید توی ASP.NET 2.0 از کنترل asp:FileUpload استفاده کنید.
توضیحات مربوط به کد:
C#
string sSavePath;
VB
Dim sSavePath As String
C#
string sThumbExtension;
int intThumbWidth;
int intThumbHeight;
VB
Dim sThumbExtension As String
Dim intThumbWidth As Integer
Dim intThumbHeight As Integer
متغیر اول برای مشخص کردن فولدریه که عکس اونجا آپلود میشه
متغیر دوم برای اضافه کردن یه استرینگ به نام عکس آپلود شده مورد استفاده قرار می گیره
متغیر های سوم و چهارم هم اندازه های مورد نظر برای کوچک کردن عکسه
C#
sSavePath = "~/image";
sThumbExtension = "_thumb";
intThumbWidth = 100;
intThumbHeight = 100;
VB
sSavePath = "~/image"
sThumbExtension = "_thumb"
intThumbWidth = 100
intThumbHeight = 100
تو ایونت باتون کلیک چک می کنیم که ولیو کنترل آپلود خالی نباشه
C#
if (fileUpload.PostedFile != null)
VB
If fileUpload.PostedFile IsNotNothingThen
چون کنترل آپلود از جنس
System.Web.HttpPostedFile
بنابراین یک شی از کلاس فوق میگیریم و کنترل آپلود خودمونو به این متغیر می دیم و با این متغیر کار می کنیم
C#
HttpPostedFile myFile = fileUpload.PostedFile;
VB
Dim myFile As HttpPostedFile = fileUpload.PostedFile
size فایل آپلودی رو بدست میاریم و چک می کنیم که size فایل آپلودی صفر نیاشه(یعنی چیزی انتخاب نشده)
#c
int nFileLen = myFile.ContentLength;
if (nFileLen == 0
vb
If nFileLen = 0 Then
lblUpload.Text = "No"
EndIf
اگه صفر بود پیغام خطایی رو نشون می دیم که من توی یک لیبل No رو نشون می دم
پسوند فایل رو بدست میاریمو چک می کنیم که حتما عکس باشه
C#
if (System.IO.Path.GetExtension(myFile.FileName).ToUp per() != ".JPG" && System.IO.Path.GetExtension(myFile.FileName).ToUpp er() != ".JPEG")
VB
If System.IO.Path.GetExtension(myFile.FileName).ToUpp er() <> ".JPG"AndAlso System.IO.Path.GetExtension(myFile.FileName).ToUpp er() <> ".JPEG"Then
lblUpload.Text = "No"
EndIf
بعد از اینکه این موارد رو چک کردیم یکبار عکس رو با size اصلی و یکبار هم با size کوچک Save می کنیم،البته میتونید دو فولدر مجزا برای این کار انتخاب کنید
ادامه کد:
C#
byte[] myData = new byte[nFileLen];
myFile.InputStream.Read(myData, 0, nFileLen);
string sFileName = System.IO.Path.GetFileName(myFile.FileName);
int File_append = 0;
while (System.IO.File.Exists(Server.MapPath(sSavePath + sFileName)))
{
File_append++;sFileName = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString()
}
System.IO.FileStream newFile = new System.IO.FileStream(Server.MapPath(sSavePath + "\\" + sFileName), System.IO.FileMode.Create);
newFile.Write(myData, 0, myData.Length);
newFile.Close();
System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback);
System.Drawing.Bitmap myBitmap;
try
{
myBitmap = new System.Drawing.Bitmap(Server.MapPath(sSavePath + "\\" + sFileName));
File_append = 0;
string sThumbFile = System.IO.Path.GetFileNameWithoutExtension(Server. MapPath(sSavePath + sFileName)) + sThumbExtension + ".jpg";
while (System.IO.File.Exists(Server.MapPath(sSavePath + sThumbFile))){
File_append++;
sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString() + sThumbExtension + ".jpg";
}
System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(intThumbWidth, intThumbHeight, myCallback, IntPtr.Zero);
myThumbnail.Save(Server.MapPath(sSavePath + "\\" + sThumbFile));
imgPicture.Visible = true;
imgPicture.ImageUrl = sSavePath + "\\" + sThumbFile;
// ************ Hyperlink **********//
hyper.Text = "<a href='/ResizingImage/image/" + sFileName + "'>" + sFileName + "</a>";
MainMenu.Visible = true;
// Add MenuItem RunTime //
System.Web.UI.WebControls.MenuItem omenu = new MenuItem();
omenu.NavigateUrl = "/ResizingImage/image/" + sFileName;
omenu.Text = sFileName;
omenu.ToolTip = sFileName;
omenu.Target = "_blank";
MainMenu.Items.Add(omenu);
lblUpload.Text = "Your File Was Uploded Successfully";
myThumbnail.Dispose();
myBitmap.Dispose();
VB
Dim myData(nFileLen - 1) AsByte
myFile.InputStream.Read(myData, 0, nFileLen)
'//////////////
Dim sFileName AsString = System.IO.Path.GetFileName(myFile.FileName)
Dim File_append AsInteger = 0
DoWhile System.IO.File.Exists(Server.MapPath(sSavePath & sFileName))
File_append += 1
sFileName = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString()
Loop
Dim newFile AsNew System.IO.FileStream(Server.MapPath(sSavePath & "\" & sFileName), System.IO.FileMode.Create)
newFile.Write(myData, 0, myData.Length)
newFile.Close()
'/////////////////////
Dim myCallback AsNew System.Drawing.Image.GetThumbnailImageAbort(Addres sOf ThumbnailCallback)
Dim myBitmap As System.Drawing.Bitmap
Try
myBitmap = New System.Drawing.Bitmap(Server.MapPath(sSavePath & "\" & sFileName))
'///////////////////////////
File_append = 0
Dim sThumbFile AsString = System.IO.Path.GetFileNameWithoutExtension(Server. MapPath(sSavePath & sFileName)) & sThumbExtension & ".jpg"
DoWhile System.IO.File.Exists(Server.MapPath(sSavePath & sThumbFile))
File_append += 1
sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString() & sThumbExtension & ".jpg"
Loop
Dim myThumbnail As System.Drawing.Image = myBitmap.GetThumbnailImage(intThumbWidth, intThumbHeight, myCallback, IntPtr.Zero)
myThumbnail.Save(Server.MapPath(sSavePath & "\" & sThumbFile))
imgPicture.Visible = True
imgPicture.ImageUrl = sSavePath & "\" & sThumbFile
'////////Hyperlink/////////////
hyper.Text = "<a href='/ResizingImage/image/" & sFileName & "'>" & sFileName & "</a>"
'//////////////////////////////
MainMenu.Visible = True
'/////Add MenuItem RunTime/////
Dim omenu As System.Web.UI.WebControls.MenuItem = New MenuItem()
omenu.NavigateUrl = "/ResizingImage/image/" & sFileName
omenu.Text = sFileName
omenu.ToolTip = sFileName
omenu.Target = "_blank"
MainMenu.Items.Add(omenu)
'//////////////////////////////
lblUpload.Text = "Your File Was Uploded Successfully"
myThumbnail.Dispose()
myBitmap.Dispose()
Catch e1 As System.Exception
EndTry
EndIf
EndIf
به دو زبون VB و C# میباشد
منبع : http://www.nofa.ir/ShowArticle-id37.aspx
موفق باشید
کدی که نوشتم مربوط می شه به ذخیره کردن عکس های آپلود شده در اندازه های کوچکتر.
البته این روش برای درست کردن Thumbnail هم میتونه مفید باشه،به طوریکه توی یه صفخه aspx با نشون دادن عکس های کوچک شده (آپلود شده) و link کردن اونا به عکس های بزرگتر میتونید یه Thumbnail درست کنید.
من این برنامه رو با ASP.NET 2.0 نوشتم و از MasterPage هم در اون استفاده کردم.
البته من برای آپلود عکس از یه کنترل html استفاده کردم،ولی شما می تونید توی ASP.NET 2.0 از کنترل asp:FileUpload استفاده کنید.
توضیحات مربوط به کد:
C#
string sSavePath;
VB
Dim sSavePath As String
C#
string sThumbExtension;
int intThumbWidth;
int intThumbHeight;
VB
Dim sThumbExtension As String
Dim intThumbWidth As Integer
Dim intThumbHeight As Integer
متغیر اول برای مشخص کردن فولدریه که عکس اونجا آپلود میشه
متغیر دوم برای اضافه کردن یه استرینگ به نام عکس آپلود شده مورد استفاده قرار می گیره
متغیر های سوم و چهارم هم اندازه های مورد نظر برای کوچک کردن عکسه
C#
sSavePath = "~/image";
sThumbExtension = "_thumb";
intThumbWidth = 100;
intThumbHeight = 100;
VB
sSavePath = "~/image"
sThumbExtension = "_thumb"
intThumbWidth = 100
intThumbHeight = 100
تو ایونت باتون کلیک چک می کنیم که ولیو کنترل آپلود خالی نباشه
C#
if (fileUpload.PostedFile != null)
VB
If fileUpload.PostedFile IsNotNothingThen
چون کنترل آپلود از جنس
System.Web.HttpPostedFile
بنابراین یک شی از کلاس فوق میگیریم و کنترل آپلود خودمونو به این متغیر می دیم و با این متغیر کار می کنیم
C#
HttpPostedFile myFile = fileUpload.PostedFile;
VB
Dim myFile As HttpPostedFile = fileUpload.PostedFile
size فایل آپلودی رو بدست میاریم و چک می کنیم که size فایل آپلودی صفر نیاشه(یعنی چیزی انتخاب نشده)
#c
int nFileLen = myFile.ContentLength;
if (nFileLen == 0
vb
If nFileLen = 0 Then
lblUpload.Text = "No"
EndIf
اگه صفر بود پیغام خطایی رو نشون می دیم که من توی یک لیبل No رو نشون می دم
پسوند فایل رو بدست میاریمو چک می کنیم که حتما عکس باشه
C#
if (System.IO.Path.GetExtension(myFile.FileName).ToUp per() != ".JPG" && System.IO.Path.GetExtension(myFile.FileName).ToUpp er() != ".JPEG")
VB
If System.IO.Path.GetExtension(myFile.FileName).ToUpp er() <> ".JPG"AndAlso System.IO.Path.GetExtension(myFile.FileName).ToUpp er() <> ".JPEG"Then
lblUpload.Text = "No"
EndIf
بعد از اینکه این موارد رو چک کردیم یکبار عکس رو با size اصلی و یکبار هم با size کوچک Save می کنیم،البته میتونید دو فولدر مجزا برای این کار انتخاب کنید
ادامه کد:
C#
byte[] myData = new byte[nFileLen];
myFile.InputStream.Read(myData, 0, nFileLen);
string sFileName = System.IO.Path.GetFileName(myFile.FileName);
int File_append = 0;
while (System.IO.File.Exists(Server.MapPath(sSavePath + sFileName)))
{
File_append++;sFileName = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString()
}
System.IO.FileStream newFile = new System.IO.FileStream(Server.MapPath(sSavePath + "\\" + sFileName), System.IO.FileMode.Create);
newFile.Write(myData, 0, myData.Length);
newFile.Close();
System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback);
System.Drawing.Bitmap myBitmap;
try
{
myBitmap = new System.Drawing.Bitmap(Server.MapPath(sSavePath + "\\" + sFileName));
File_append = 0;
string sThumbFile = System.IO.Path.GetFileNameWithoutExtension(Server. MapPath(sSavePath + sFileName)) + sThumbExtension + ".jpg";
while (System.IO.File.Exists(Server.MapPath(sSavePath + sThumbFile))){
File_append++;
sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString() + sThumbExtension + ".jpg";
}
System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(intThumbWidth, intThumbHeight, myCallback, IntPtr.Zero);
myThumbnail.Save(Server.MapPath(sSavePath + "\\" + sThumbFile));
imgPicture.Visible = true;
imgPicture.ImageUrl = sSavePath + "\\" + sThumbFile;
// ************ Hyperlink **********//
hyper.Text = "<a href='/ResizingImage/image/" + sFileName + "'>" + sFileName + "</a>";
MainMenu.Visible = true;
// Add MenuItem RunTime //
System.Web.UI.WebControls.MenuItem omenu = new MenuItem();
omenu.NavigateUrl = "/ResizingImage/image/" + sFileName;
omenu.Text = sFileName;
omenu.ToolTip = sFileName;
omenu.Target = "_blank";
MainMenu.Items.Add(omenu);
lblUpload.Text = "Your File Was Uploded Successfully";
myThumbnail.Dispose();
myBitmap.Dispose();
VB
Dim myData(nFileLen - 1) AsByte
myFile.InputStream.Read(myData, 0, nFileLen)
'//////////////
Dim sFileName AsString = System.IO.Path.GetFileName(myFile.FileName)
Dim File_append AsInteger = 0
DoWhile System.IO.File.Exists(Server.MapPath(sSavePath & sFileName))
File_append += 1
sFileName = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString()
Loop
Dim newFile AsNew System.IO.FileStream(Server.MapPath(sSavePath & "\" & sFileName), System.IO.FileMode.Create)
newFile.Write(myData, 0, myData.Length)
newFile.Close()
'/////////////////////
Dim myCallback AsNew System.Drawing.Image.GetThumbnailImageAbort(Addres sOf ThumbnailCallback)
Dim myBitmap As System.Drawing.Bitmap
Try
myBitmap = New System.Drawing.Bitmap(Server.MapPath(sSavePath & "\" & sFileName))
'///////////////////////////
File_append = 0
Dim sThumbFile AsString = System.IO.Path.GetFileNameWithoutExtension(Server. MapPath(sSavePath & sFileName)) & sThumbExtension & ".jpg"
DoWhile System.IO.File.Exists(Server.MapPath(sSavePath & sThumbFile))
File_append += 1
sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile. FileName) + File_append.ToString() & sThumbExtension & ".jpg"
Loop
Dim myThumbnail As System.Drawing.Image = myBitmap.GetThumbnailImage(intThumbWidth, intThumbHeight, myCallback, IntPtr.Zero)
myThumbnail.Save(Server.MapPath(sSavePath & "\" & sThumbFile))
imgPicture.Visible = True
imgPicture.ImageUrl = sSavePath & "\" & sThumbFile
'////////Hyperlink/////////////
hyper.Text = "<a href='/ResizingImage/image/" & sFileName & "'>" & sFileName & "</a>"
'//////////////////////////////
MainMenu.Visible = True
'/////Add MenuItem RunTime/////
Dim omenu As System.Web.UI.WebControls.MenuItem = New MenuItem()
omenu.NavigateUrl = "/ResizingImage/image/" & sFileName
omenu.Text = sFileName
omenu.ToolTip = sFileName
omenu.Target = "_blank"
MainMenu.Items.Add(omenu)
'//////////////////////////////
lblUpload.Text = "Your File Was Uploded Successfully"
myThumbnail.Dispose()
myBitmap.Dispose()
Catch e1 As System.Exception
EndTry
EndIf
EndIf
به دو زبون VB و C# میباشد
منبع : http://www.nofa.ir/ShowArticle-id37.aspx
موفق باشید