<table>
<tr>
<td nowrap><b>Dosyayı Seçiniz:</b></td>
<td><input type="file" id="dosya" name="dosya" runat="server" class="alan"></td></tr>
<tr>
<td height="45″ colspan="2″></td></tr>
<tr>
<td colspan="2″ align="center">
<asp:button runat="server" id="UploadButonu" Text="SUNUCUYA YÜKLE" onClick="DosyaUpload" CssClass="buton" /></td>
</tr>
</table>

 

ile resimdeki sayfa görüntüsünü elde ediyoruz. Daha sonra kod tarafına geçiyoruz.

Protected Sub DosyaUpload(ByVal sender As Object, ByVal e As System.EventArgs) Handles UploadButonu.Click
If Not (dosya.PostedFile Is Nothing) Then
Dim DosyaAdi As String = dosya.PostedFile.FileName.Substring(dosya.PostedFile.FileName.LastIndexOf("\") + 1)
Dim DosyaTipi As String = dosya.PostedFile.ContentType
Dim DosyaBoyutu As Integer = dosya.PostedFile.ContentLengthDim suzanti As String = Right(DosyaAdi, 4)
Dim uzanti As String
If suzanti <> "" Then
uzanti = suzanti
Else : uzanti = ".jpg"
End If
Dim r As String = Request.QueryString("r")
If DosyaTipi = "image/pjpeg" Or DosyaTipi = "image/bmp" Or DosyaTipi = "image/x-png" Or DosyaTipi = "image/gif" Then
'yükle
If DosyaBoyutu <= 0 Then
Response.Write("Hatalı dosya, upload yapılamadı: " + DosyaAdi)
Else
'önce resmi sunucuya yüklüyoruz
dosya.PostedFile.SaveAs(Server.MapPath("..\urunresim\" + r + uzanti))
Try
Dim alp As System.Drawing.Image = System.Drawing.Image.FromStream(dosya.PostedFile.InputStream)
Dim w As Integer = alp.Width
'yüklediğimiz resmin genişliğini alıyoruz
Dim h As Integer = alp.Height 
'yüklenen resmin yüksekliğini alıyoruz
Dim YeniGenislikB As Integer = 0
Dim YeniYukseklikB As Integer = 0
Dim YeniGenislikK As Integer = 0
Dim YeniYukseklikK As Integer = 0
'Sunucuya yüklediğimiz resimden bir büyük birde küçük resim oluşturacağız. Ben büyük resim için maksimum yükseklik veya genişlik 400, küçük resim içinde 75 piksek olsun istedim siz bunu kendinize göre uyarlarsınız. Buradaki algoritmamız şu genişlik ve yüksekliği kıyaslayıp orantılı değerler buluyoruz ki buda oluşan resimlerin orantılı olarak küçülmesi için. Yoksa resimler biçimsiz olabilir.

If w > h Then
'genişlik büyük
YeniGenislikB = 400
YeniYukseklikB = (400 * alp.Height) / alp.Width
YeniGenislikK = 75
YeniYukseklikK = (75 * alp.Height) / alp.Width
Else
YeniGenislikB = (400 * alp.Width) / alp.HeightYeniYukseklikB = 400
YeniGenislikK = (75 * alp.Width) / alp.HeightYeniYukseklikK = 75
End If
'aldığımız değerlere göre büyük resmi farklı kaydediyoruz
Dim alpBuyukResim As System.Drawing.Image = alp.GetThumbnailImage(YeniGenislikB, YeniYukseklikB, Nothing, IntPtr.Zero) 
alpBuyukResim.Save(Server.MapPath("..\urunresim\buyuk\" + r + uzanti))
'küçük resmi kaydediyoruz
Dim alpKucukResim As System.Drawing.Image = alp.GetThumbnailImage(YeniGenislikK, YeniYukseklikK, Nothing, IntPtr.Zero)
alpKucukResim.Save(Server.MapPath("..\urunresim\kucuk\" + r + uzanti))
'resimleri kaydettikten sonra veritabanına kayıt yada yapmak istediğiniz başka bir şey varsa yapabilirsiniz
'istediğimiz resimleri oluşturduğumuza göre ilk yüklediğimiz orjinal resime artık gerek kalmadı, onu uçurmakta vayda var
'siliyoruz
System.IO.File.Delete(Server.MapPath("..\urunresim\" + r + uzanti))
Catch ex As Exception
Response.Write(ex.Message)
End Try
End If
Else
Response.Write("sadece resim dosyası yükleyebilirsiniz")
End If
End If
End Sub 

Çok fazla karmaşaya girmeden basit bir şekilde resim upload ve resim thumnail oluşturmayı göstermeye çalıştım. Bu işlemleri yaptığınız klasörde yazma izni olması gerekmektedir. Anlayamadığınız yerleri sorabilirsiniz?

2 Yorum Var
Alptekin Bodur Alptekin Bodur 14 Temmuz 2010 Çarşamba 18:56
C# int yeniW = Convert.ToInt32(Request["W"].ToString()); int yeniH = Convert.ToInt32(Request["H"].ToString()); Response.ContentType="image/gif"; string URI = "http://www.google.com/images/logo.gif"; System.Drawing.Bitmap DestImage = new System.Drawing.Bitmap(276, 110, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Graphics.FromImage(DestImage).DrawImage(System.Drawing.image.FromStream(new System.Net.WebClient().OpenRead(URI)), new System.Drawing.Rectangle(0,0,276,110), new System.Drawing.Rectangle(0,0,276,110),System.Drawing.GraphicsUnit.Pixel); System.Drawing.Bitmap imgOutput = new System.Drawing.Bitmap(DestImage, yeniW, yeniH); imgOutput.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); imgOutput.Dispose(); VB Dim yeniW As Integer = Convert.ToInt32(Request("W").ToString()) Dim yeniH As Integer = Convert.ToInt32(Request("H").ToString()) Response.ContentType = "image/gif" Dim URI As String = "http://www.google.com/images/logo.gif" Dim DestImage As New System.Drawing.Bitmap(276, 110, System.Drawing.Imaging.PixelFormat.Format24bppRgb) System.Drawing.Graphics.FromImage(DestImage).DrawImage(System.Drawing.image.FromStream(New System.Net.WebClient().OpenRead(URI)), New System.Drawing.Rectangle(0, 0, 276, 110), New System.Drawing.Rectangle(0, 0, 276, 110), System.Drawing.GraphicsUnit.Pixel) Dim imgOutput As New System.Drawing.Bitmap(DestImage, yeniW, yeniH) imgOutput.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif) imgOutput.Dispose()
Mehtap Mehtap 12 Temmuz 2010 Pazartesi 09:38
Merhaba, Yukarıdaki koda benzer bir kod ile yüklemeyi ve veritabanına dosya ismini yazdırmayı yapıyorum. Fakat bana inputun file typni kullanmadan upload lazım. Yani bir web sitesinden çekecek resimleri. www.yahoo.com/resim.gif mesela. Buradan resimleri alıp kendi sunucumua kaydettireceğim. İnputun file tpye ni kullanınca gözat da oluyor ve seçmek zorunda kalıyorsunuz value kullanılamıyor. Nasıl yapabilirim?
Yorum Yazın
İsminiz: gerekli
E-Posta: gerekli (gizli kalacak)
Web:
Yorum: gerekli
© 2009 Alptekin Bodur