Sözlük

C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

6 Temmuz 2015 Pazartesi

Asp.Net Klasördeki Resimleri Gösterme

Asp.net ile dosya okuma işlemi yaparak bir klasör içindeki resimler nasıl görüntülenir onunla ilgili küçük bir örnek uygulama yapacağız.

İlk olarak projemize resimler isimli bir klasör açıp içine resimlerimizi kopyalıyoruz. Şimdi resimleri ekranda görüntülemek için sayfamıza bir Repeater ekleyip içine resimleri görüntüleyecek olan image nesnemizi koyuyoruz.

<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="RepeaterImages" runat="server">
            <ItemTemplate>
                <asp:Image ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' Width="150"
                    Height="150" />
            </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>
</body>
</html>

Sayfamızın page_load olayında ilk olarak klasördeki dosyaları okuyup bir dizi içine aktarıyoruz daha sonra bu dizi içindeki elemanların resim dosyası olup olmadığını uzantılarını kontrol ederek tespit ediyoruz eğer resim dosyası ise resimler listesine atıyoruz. Tüm dosyalar kontrol edildikten sonra son olarak listeyi eklediğimiz Repeater’ın veri kaynağı olarak belirleyip içini dolduruyoruz.

protected void Page_Load(object sender, EventArgs e)
        {
            string[] klasordekiler = Directory.GetFiles(Server.MapPath("~/resimler"));
            List<String> resimler = new List<string>(klasordekiler.Count());
            string[] resimuzantisi = { ".jpg", ".gif", ".png", ".jpeg" };
            //www.aspnetornekleri.com
            foreach (string resimdosyasi in klasordekiler)
            {
                for (int i = 0; i < resimuzantisi.Length; i++)
                {
                    string[] parcalar;
                    parcalar = resimdosyasi.Split('.');
                    if(resimuzantisi[i]=="."+parcalar[1])
                    resimler.Add(String.Format("~/resimler/{0}", System.IO.Path.GetFileName(resimdosyasi)));
                }
             }
            //www.aspnetornekleri.com
            RepeaterImages.DataSource = resimler;
            RepeaterImages.DataBind();
        }



1 Temmuz 2015 Çarşamba

ASP.NET’te C# Kullanarak Resmi Boyutlandırma ve Üzerine Çapraz Watermark Yazdırma

Merhabalar.

Bu yazımızda fileupload ile yüklenen bir resmin üzerine çapraz olarak nasıl “watermark” yazabileceğimizi anlatmaya çalışacağız.

Buradaki çalışma mantığını şu şekilde özetleyebiliriz.  Öncelikle resmi boyutlandırıyoruz. Resmin oranını bozulmaması için de genişlik ve yükseklik oranına göre uygun şekilde boyutlandırma yapılmaktadır. Resim boyutlandırdıktan sonra resmin köşegen uzunluğu alınıyor. Bu köşegen uzunluğunu watermark yazısının boyutunu belirlemek için kullanacağız. Köşegen ne kadar uzunsa yazı da o kadar büyük olacak gibi düşünebiliriz. Daha sonra da resmin köşegen eğimini hesaplayarak o eğime uygun şekilde watermarkımızı yazarak kaydediyoruz.

Şimdi öncelikle bu işi yapan sınıf ve metodumuzu hazırlayalım. App_code klasörümüze Resim.cs isminde bir dosya oluşturuyoruz. Kodlarımız ise şöyle

ASP.NET’te C# Kullanarak Resmi Boyutlandırma

ASP.NET’te C# Kullanarak Resmi Boyutlandırma


25 Haziran 2015 Perşembe

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

Merhaba arkadaşlar,
Bu makalede Jquery kütüphanesinden yararlanarak Asp.NET (C#) ile çoklu resim yüklüyebileceğimiz bir WebForm uygulaması yapacağız.

Uygulamamızın sahip olacağı özellikler:
  • Çoklu resim yükleme
  • Yükleme esnasında resimlerin boyutlandırılması
  • Veri tabanına resim yollarının kaydedilmesi
1-) Şimdi Sql Server 2008 yazılımını çalıştırıp yeni bir veri tabanı oluşturarak uygulamamızı geliştirmeye başlıyalım.
Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma
ResimId : Her resim için bağımsız değer tutulur.Otomatik artan sayı ve birinci anahtar özellikleri belirlenir.
ResimYolu : Yüklenen resmin adının tutulacağı alan.
2-) Uygulamamızda kullanıcağımız dosyaları indirelim.
http://resim.sanalkurs.net/uploads/gerekli_dosyalar.jpg
jquery.js : Javascript kütüphanesi.
multi.js : Javascript kütüphanesine ait çoklu dosya yükleme eklentisi.
3-) Visual Studio yazılımını çalıştırıp yeni bir Web Sitesi tanımlıyoruz.
4-) Projemizi oluşturduktan sonra indirdiğimiz dosyaları proje kök dizinine kopyalayalım ve resim dosyalarımızın tutulacağı dizinleri oluşturalım.
Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma
js : Javascript kütüphane ve eklentilerimizin bulunduğu klasör.
Resimler : Resim dosyalarımızın tutulacağı ana dizin.
150 : 150 pixel genişliğindeki resim dosyalarımızın tutulacağı dizin.
800 : 150 pixel genişliğindeki resim dosyalarımızın tutulacağı dizin.
Temp : Yüklenen orjinal resim dosyalarımızın tutulacağı dizin.
5-) Default.aspx sayfamızı açıp komponentlerimizi ekliyoruz.
Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma
FileUpload : Dosya yüklemek için. ID sini fileResimler olarak değiştirelim. Class ını multi olarak belirtiyoruz.
Buton : Resimlerimizi seçtikten sonra yükleme işlemini başlatmak için. ID sinibtnResimYukle olarak değiştirelim.
Label : Yüklenen dosyalarımızın bildirilmesi için. ID sini lblMesaj olarak değiştirelim.
6-) Default.aspx sayfamızın Source kısmına geçerek gerekli dosyalarımızı çağırıyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

7-) Default.aspx.cs dosyasını açarak uygulamamızda kullanıcağımız C# kütüphanelerini projemize dahil ediyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

Yüklediğimiz resimleri boyutlandırmak için kullanıcağımız ResimBoyutlandir adlı methodumuzu oluşturalım.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

Methodumuz iki adet parametre alıyor ve geriye boyutlandırılmış resmimizi döndürüyor.
resim : Boyutlandırılacak olan orjinal resim.
boyut : Kullanılacak olan genişlik değeri.
ydeger : Kullanılacak olan yeni genişlik ve yükseklik değerleri.
yresim : Yeni oluşturulan resim.
9-) Şimdi btnResimYukle ID li butonumuza tıkladığımızda çalışacak olan resim yükleme kodlarımızı yazalım.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

10-) Şimdi uygulamamızı çalıştırıp resim yüklemeyi deneyelim.
* Dört adet resim seçip Resim(leri) Yükle butonuna tıklıyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

* Resimlerin yüklendiğini oluşturduğumuz Label komponentinde bize bildirdi.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

* Temp klasörümüze seçtiğimiz resimler yüklendi ama 150 ve 800 isimli klasörlerimizin boş olduğunu görüyoruz çünkü ResimBoyutlandir isimli methodumuzu henüz kullanmadık.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

11-) Dikkat ettiyseniz resimlerimizin ismi ingilizceye dönüşmüş olarak kaydedildi bunu jquery eklentimiz sağlamıştır.Ama aynı isimde dosya yükleme kalktığımızda problem oluşabileceği için resimlerin yüklenirken eşsiz bir isimde kaydedilmesi için gereken düzenlemeyi yapalım şimdide.
* Resim ad ve uzantılırımızın saklanacağı string değişkenlerimizi ana sınıfımız içerisinde oluşturalım.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

* Resmin uzantısını uzanti adlı string değişkenimize atıyoruz.
* resimadi adlı string değişkenimizdede DateTime sınıfından yararlanarak benzersiz bir değer oluşturup sonunada resim uzantısını ekleyerek resmimize atanacak yeni adı oluşturuyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

* Resmi resimadi değişkenindeki adla kaydetmek için kod satırımızdaki fileName yerine resimadi değişkenizi kullanıyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

12-) Uygulamamızı yeniden çalıştırıp yeni yüklenen resimlerin isimlerine bakacak olursak değiştiğini göreceğiz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

13-) ResimBoyutlandir methodumuzu kullanarak resimlerimizi boyutlandıralım.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

resim : Yeni bir bitmap nesnesi oluşturup yüklenen resmimizi bu nesneye atıyoruz.
resim : Oluşturduğumuz bitmap nesnesine 150px genişliğinde oluşturulan yeni resmi atıyoruz.
[b]resim.Save : Oluşturulan yeni resmi 150 adlı klasörümüze kaydediyoruz.
* 800px genişliğindeki resmin oluşturulması için kodumuzu biraz düzenliyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

14-) Uygulamamızı çalıştırdığımızda yüklediğimiz resimlerin orjinallerinin yanında iki farklı boyutta (150px ve 800px genişliğinde) kopyalarının oluştuğunu görüyoruz.

* Temp klasörü

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

* 150 klasörü

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

* 800 klasörü

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

15-) Son adım olarak yüklenen resimlerinin adlarının veri tabanına kaydedilmesi için gereken kodları uygulamamıza ekleyelim.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma

16-) Uygulamamızı çalıştırdığımızda yüklenen resimlerin adlarının veri tabanına kaydedildiğini görüyoruz.

Asp.NET ile Çoklu Resim Yükleme ve Boyutlandırma


Kaynak dosyayı indirmek için tıklayın

Bu Yazı SanalKurs.NET sitesinden Burak KIRBAĞ tarafından yazılmıştır.

12 Haziran 2015 Cuma

AddThis Sosyal Medya Kullanımı

AddThis kullanımına siteye üye olmakla başlıyoruz. Siteye üye olduktan sonra Tools menüsünden Sharing Buttons seçin.


Add This


Seçtiğimiz button görünümünden sonra düzenleme yapıyoruz.


AddThis Sosyal Medya Kullanımı


Açılan pencereden siteye eklenecek kodu alıyoruz ve siteye ekliyoruz.

AddThis Sosyal Medya Kullanımı

Siteye eklediğimiz kodların içine de button linkleri ekliyoruz.
AddThis Sosyal Medya Kullanımı

Sosyal butonları ekledik. 


5 Mayıs 2015 Salı

İbrahim Atay ASP.Net MVC Öğreniyorum Maceram

İbrahim Atay'ın hazırladığı MVC Eğitim videoları...


 “ASP.Net MVC Öğreniyorum” serisi 19 video,20 blog içeriği ve bir uygulama projesinde oluşmaktadır.
ASP.Net MVC Öğreniyorum video serisi sürecinde ASP.Net MVC 2  ve 3 sürümlerin geçiş dönemine gelmesi, ASP.Net MVC 3 bilgilerimi anlatabileceğim ASP.NET MVC 3 RC Sürümüne Bakış internet seminerinin temellerini oluşturmuştur. Aşağıda ASP.NET MVC 3 RC Sürümüne Bakışinternet semineri ile ilgili metrayeller ilgili bağlantılar bulunmaktadır.
Video kayıt / http://bit.ly/ASPNetMVC3WebinerVideo
İnternet Semineri sunumu / http://bit.ly/ASPNetMVC3RCWebiner
uygulama kaynak kodları / http://bit.ly/ASPNetMVC3Samples

Kaynak

C# İle Generic List ve DataTable

Herhangi bir veritabanından çektiğimiz verileri işlerken ya da görüntülerken Veri Kaynağı Konfigrasyon Sihirbazı (Data Source Configuration Wizard) kullanmadan veriyi bir class ile modelleyerek ilgili data kontrolüne (GridView, Repeater vb.) kod tarafında bağlamak isteyebiliriz. Veriyi bir class ile modelleyerek kullanmak iş yükünü ve sürecini uzatır ama bize daha fazla hareket alanı ve kontrol sağlar. Teknik olarak bu bir zorunluluk değildir ancak veriyi bu şekilde işlerkenSqlDataAdapter yerine SqlDataReader kullanmamız performans anlamında özellikle veri yükümüz arttığında bir hayli performans artışı sağlar.
Class ile modellediğimiz veriyi bir Generic List ‘e atayıp GridView, ListView, ListBox, CheckBoxListvs.. gibi kontrollerden birine bağlayabiliriz. Ancak bazen Generic List’e atanmış bu veriyi DataTable‘a dönüştürme ihtiyacı duyabiliriz. Mesela şuradaki yazımda bahsettiğim örnekte olduğu gibi metodun parametre olarak bir DataTable istediği durumlarda bu dönüşümü yapacak bir class/metod işimize yarayacaktır. Şimdi basitçe bunu nasıl yapılacağını göreceğiz. Bir örnek senaryo üzerinden gidelim:
Veritabanımızda Kisiler isminde bir tablomuz var. Bu tablodan çekeceğimiz veriyi modelleyeceğimiz class’ımız:
public class KisilerDM;
{
public string Ad { get; set; }
public string Soyad { get; set; }
public string Adres { get; set; }
public string Telefon { get; set; }
public string Email { get; set; }
public KisilerDM(string Ad, string Soyad, string Adres, string Telefon, string Email)
{
this.Ad = Ad;
this.Soyad = Soyad;
this.Adres = Adres;
this.Telefon = Telefon;
this.Email = Email;
} }
Şimde de verimizi SqlDataReader ile çekerek bu class üzerinden modelleyelim:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
public class Kisiler
{
public Kisiler()
{
}
public static List KisileriGetir()
{
List kisiler = new List();
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = "";
Conn.Open();
SqlCommand Cmd = new SqlCommand("SELECT Ad, Soyad, Adres, Telefon, Email FROM Kisiler", Conn);
Cmd.CommandType = CommandType.Text;
Cmd.Parameters.Add("@Ad", SqlDbType.NVarChar);
Cmd.Parameters.Add("@Soyad", SqlDbType.NVarChar);
Cmd.Parameters.Add("@Adres", SqlDbType.NVarChar);
Cmd.Parameters.Add("@Telefon", SqlDbType.NVarChar);
Cmd.Parameters.Add("@Email", SqlDbType.NVarChar);
SqlDataReader dr = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
kisiler.Add(new KisilerDM(
// veri null döndüğünde hata almamak için aşağıdaki gibi
// conditional operator (?:) kullandık.
dr.IsDBNull(0) ? String.Empty : dr.GetString(0), // Ad
dr.IsDBNull(1) ? String.Empty : dr.GetString(1), // Soyad
dr.IsDBNull(2) ? String.Empty : dr.GetString(2), // Adres
dr.IsDBNull(3) ? String.Empty : dr.GetString(3), // Telefon
dr.IsDBNull(4) ? String.Empty : dr.GetString(4) // Email
));
}
dr.Close();
return kisiler;
}
}
Artık yukarıdaki metodumuz bize verilerimizden oluşan bir generic list döndürüyor. Bu generic list’i bize DataTable olarak döndürecek class ve metodlarımız:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
public class MyData
{
// bu metotla dönüştürmeyi yapılacak
public static DataTable ConvertGenericListToDataTable(IList list)
{
DataTable dt = CreateTable();
Type entityType = typeof(T);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (T item in list)
{
DataRow dr = dt.NewRow();
foreach (PropertyDescriptor property in properties)
{
dr[property.Name] = property.GetValue(item);
}
dt.Rows.Add(dr);
}
return dt;
}

private static DataTable CreateTable()
{
Type entityType = typeof(T);
DataTable dt = new DataTable(entityType.Name);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (PropertyDescriptor property in properties)
{
dt.Columns.Add(property.Name, property.PropertyType);
}
return dt;
}
}
Örnek kullanım:
List liste = KisileriGetir();
DataTable MyDataTable = MyData.ConvertGenericListToDataTable(liste);

Kaynak

Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak

Asp.NET projelerimizin olmazsa olmazı -ki olmazsa uygulama çalışmaz :)- web.config dosyamızda <appSettings> düğümü içerisinde uygulamada kullanmak üzere bir çok anahtar tanımlarız. Bunları tıpkı bir class içindeki property’ler gibi etkin kullanabilmek adına kendi projelerimde kullanmak için bir pratik bir yöntem geliştirdim ve paylaşmak istedim. Adım adım nasıl yapılacağını görelim:
Yeni bir “Asp.NET Web Site” oluşturuyoruz. Projemizi bir kez F5 ile Debug ediyoruz ki web.configdosyamdaki girdiler VWD ya da VS tarafından güncellensin. Öncelikle aşağıdaki ekran görüntüsünde de görüldüğü üzere sitemize uygulama ayarları için web.config‘den bağımsız olarak farklı bir “Web Configuration File” dosyası oluşturup ekliyoruz. Bu dosyaya ben “appSettings.config” adını veriyorum ve “App_Data” klasörüne kaydediyorum. Bu klasöre kaydetmek zorunlu değil. Ancak hostta bu klasör varsayılan olarak yazma iznine sahip olduğu için host’a yüklediğimde tekrar yazma izinleri ile uğraşmak zorunda kalmayacağım için tercihimi bu yönde kullandım.
app.Settings.config dosyasını oluşturma
Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak
Yukarıdaki resimde sağ tarafta oluşturduğumuz yeni konfigrasyon dosyasının içeriği görünmekte. Burada en üstteki <?xml version="1.0"?> satırı hariç diğer satırları silip onun yerine aşağıdaki gibi<appSettings></appSettings> düğümünü ekliyoruz. Ayarlarımızı bu düğümler içerisine yazacağız. Örnek olarak aşağıdaki resimde de görüldüğü gibi iki adet anahtarımız var.
Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak
Şimdi web.config dosyamızda yeni oluşturduğumuz bu dosyanın yolunu <configuration>düğümünün hemen altında aşağıdaki biçimde tanımlıyoruz:

Şimdi projemize bir “App_Code” klasörü ekleyip uygulamamız içinden bu değerlere pratik bir biçimde erişebileceğimiz, güncelleyebileceğimiz class’larımızı yazmaya başlayabiliriz. İlk class’ımızbizim ayarları güncelleyebileceğimiz metodumuzu barındıran SettingsBase isimli class’ımız olacak. Bu class’ı SettingsBase.cs isimli dosya adı ile oluşturuyoruz.
Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak

SettingBase.cs dosyası içeriği:

Buradaki SaveSetting metodunu bilinçli olarak static tanımladım. Böylece class’ın yeni bir instance’ını oluşturmak zorunda kalmadan değeri set edebiliriz. Ayrıca appSettings.configdosyanızı App_Data dışında bir klasöre kaydettiyseniz, metot içindeki string baseDir = System.Web.HttpContext.Current.Server.MapPath(“~/App_Data/”); satırını da ona göre değiştirmelisiniz.
Şimdi ise Settings isimli ayarlarımızın property’lerinin bulunacağı class’ımızı Settings.cs dosya adıyla oluşturacağız. Ve class’ı da SettingsBase isimli class’ımızdan türeteceğiz ki oradakiSaveSetting metodunu kullanabilelim.
Setting.cs dosyası içeriği:
Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak
Artık ayarlarımızı class’ımız üzerinden get/set edebiliriz. Örnek olarak sitemizin ana sayfasının browser başlığını bu class içindeki property’den alalım. Bunun için Page_Load event’i içinde aşağıdaki kodu yazmamız yeterli olacaktır:

Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak
Sonuç olarak aşağıda görüldüğü gibi browser’ımızın başlığı bizim appSettings.config içinde tanımladığımız değer oldu. Aynı şekilde asp.net sayfamız içindeki bir kontrole ya da kodumuz içindeki herhangi bir string değişkene de atayabiliriz.
Bir de tanımladığımız bir değeri değiştirmeyi deneyelim. Mesela browser başlığını değiştirelim. Bunun için aşağıdaki kod bloğunu çalıştıralım:

İşte appSettings.config içindeki “SiteTitle” anahtarımızın değeri:
Web.config İle Uygulama Ayarlarını Class Üzerinden Daha Etkin Kullanmak
Görüldüğü gibi Settings class’ımızdaki property üzerinden hem get hem de set işlemini pratik bir biçimde yapabiliyoruz. Siz kendi projelerinizdeki ihtiyaçlara göre bu class’ı geliştirebilirsiniz. Mesela Int32 türünde değer alan property’ler için set bloğunda bir TryParse denetimi ile tam sayı (integer) olmayan değerlerin kaydedilmesini engelleyebilirsiniz.

Kaynak