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.