ASP.NET ile Resim Boyutlandırma

Weble uğraşıpta resimlerle uğraşmayan kimse yokdur herhalde. Resmi upload et, sitenin tasarımında kullanılacak yerlere göre boyutlandır vs.. ASP.NET C# ile bu işlemi farklı bir methodla nasıl çözebilirizi anlatmaya çalışacağım. Bu mekanızmada sadece orjinal resmi upload ediyoruz ve görüntülemek istediğiniz yere göre boyutlandırıp çağırabiliyorsunuz. Bunu klasik ASP de PHP de yapmak da mümkün.

ResimBoyutlandir.aspx adında bir sayfa oluşturuyoruz ve ResimBoyutlandir.aspx.cs dosyamızın içine aşşağıdaki kodları yazıyoruz.

using System;
using System.Drawing.Imaging;
using System.Drawing;
using System.Drawing.Drawing2D;

public partial class ResimBoyutlandir : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
resimboyutlandir();
}
}

protected void resimboyutlandir() {
int yeniW = Convert.ToInt16(Request.QueryString["Genislik"]); // küçülteceğimiz genişlik değerini alıyoruz.
string gelenResim = Request.QueryString["ResimAdi"]; //resim adını alıyoruz.
string Klasor = "Resimler/Urunler/" + gelenResim; // Resimlerin bulunduğu klasörü gösteriyoruz.
Image imgPhotoVert = Image.FromFile(Server.MapPath(Klasor));
Image imgPhoto = null;
imgPhoto = ResimBoyutlandir(imgPhotoVert, yeniW); //ScaleByPercent adlı mekanızmaya yolluyoruz aldığımız bilgileri.
imgPhoto.Save(Response.OutputStream, ImageFormat.Jpeg); // Ekrana basıyoruz..
imgPhoto.Dispose();
}

static Image ResimBoyutlandir(Image imgPhoto, int Yukseklik)
{
int sourceWidth = imgPhoto.Width;
int sourceHeight = imgPhoto.Height;

int destWidth = Yukseklik;
int destHeight = sourceHeight * Yukseklik / imgPhoto.Width; //resmin bozulmaması için en boy ayarını veriyoruz.

Bitmap bmPhoto = new Bitmap(destWidth, destHeight,PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolution,imgPhoto.VerticalResolution);

Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; // resmin kalitesini ayarlıyoruz. Burada InterpolationMode özelliklerini bulabilirsiniz.
grPhoto.FillRectangle(Brushes.White, 0, 0, destWidth, destHeight);

grPhoto.DrawImage(imgPhoto,new Rectangle(0, 0, destWidth, destHeight),new Rectangle(0, 0, sourceWidth, sourceHeight),GraphicsUnit.Pixel);

grPhoto.Dispose();
return bmPhoto;
}
}

Şimdi geldik nasıl kullanacağımıza,
<img src=”ResimBoyutlandir.aspx?ResimAdi=boyutlanacakresim.jpg&Genislik=200″ /> Genişlik PX cinsindendir, bu kadar basit. Bu arada resim küçüldüğünde boyutuda küçülüyor. Yani yüklendiğinde 500KB olan 1000px çözünürlüğündeki bir resmi biz ekrana 100px olarak bastığımızda, örnek veriyorum boyutuda 10kb’ ye düşüyor.

  • aykut cantürk

    acaba uygulama dosyasını da upload edip link verebilir misiniz ?
    kendi sitemizi yapıorz bu işi de pek bildigimiz söylenemez resim boyutlandırmayla baya bi zamandr bizde uğraşıyoruz.
    alışveriş sitesi yapıyoruz
    sadece adminin foto yüklemesine izin vericez admin panelinden mi bu kodları çağırıcaz ?
    satırını nerede kullanıcaz ?
    yardımcı olursanız gerçekten çok sevinirim. şimdiden teşekkürler .

  • apoStyLEE

    Merhaba, bu kodlar resim yüklemek için değil sadece gösterilecek resimi boyutlandırmak içindir. Sizin bahsettiğiniz türden bir yapıyı yakın zamanda paylaşmayı düşünüyorum. Biraz daha beklerseniz sorunuzun cevabını alabilirsiniz :)

  • http://nedemek.gen.tr Kazım

    bu nasıl bi yazı rengi arkadaş ya

  • http://Websitesi serkan

    ya arkadaşlar vermiş olduğunuz kodların içine işte burası boyutlandırma işte burası bu işe yarıyor işte şurasıda şu hali gibi kodlardan alakasız yazılar içermesin lütfen. yada ayrıca ikinci bir kod bölümü açıp kodların bitmiş hali diye kodlarla oynanmamış halini yayınlarsanız yeni başlayanlar için çok iyi olur. burada ResimBoyutlandir.aspx adında bir sayfa oluşturuyoruz yazıyor bu sayfayı dreamweaver ilemi oluşturuyoruz. ikincisi ise ResimBoyutlandir.aspx.cs dosyası demişsiniz. bende böyle bir dosya yok vede tüm sayfalarım .asp olarak bitiyor. sitem tamamen çalışıyor sadece ana sayfada ziyaretçilerin ekledikleri resimleri otomatik boyutlandırıp küçülmesini istiyorum. bu dedikleriniz benim içinde uygunmudur. buarada sitemi henüz hostinge yüklemedim. paylaşımlarınız için teşekkürler…

  • http://www.bayramcetin.com bayram çeti

    static Image ResimBoyutlandir(Image imgPhoto, int Yukseklik)

    burada “ResimBoyutlandir” da aşağıda ki gibi bir hata var?

    ‘ResimBoyutlandir’: member names cannot be the same as their enclosing type

  • http://www.sidebilisim.com Faruk Akpınar

    Kod bir tane hata dışında iyi şekilde çalışmaktadır. Kodu çalıştırdığınızda hangi klasörden işlem yaparsanız o klasörden resim silmeye çalışırken işlem başka bir program tarafından kullanıldığından dolayı silme işlemi yapamazsanız uyarısı veriyor. Hataya sebebiyet veren durum ise ;” Image imgPhotoVert = Image.FromFile(Server.MapPath(Klasor)); ” burada klasörün açıldıktan sonra kapatılmamasından kaynaklanıyor.

    Hatasız çalışması için ; ” imgPhoto.Dispose(); ” kodundan sonra ” imgPhotoVert.Dispose(); ” yazarak açık olan klasörü kapatmanız yeterli olacaktır.

    Paylaşım için teşekkürler.

  • Pingback: Anonim()