Resim Boyutlandırma , C#
Merhabalar,
Görüntü işleme konusunda lisanstan mezun olurken tezimi yaparken uğraşmıştım. Tekrar görüntü işlemeye merak saldığım şu aralar öğrendiklerimi hem yeni başlayanlara faydası olması için hemde kendime kaynak oluşturmak için düzenli bir şekilde paylaşmaya çalışacağım.
Yöntem1 :
Aşağada kodlarını paylaştığım yöntemle resmi istediğiniz ölçülere getirebilirsiniz.Örneğin 400*400 px'lik bir resmi 20*800px gibi absürt bir formata çevirebilirsiniz ama resimde gözle görülür bir bozulma oluşacaktır. Eğer mantıklı bir ölçüye dönüştürürseniz göze batmıyacak şekilde bir bozulma ile resmi oluşturabilirsiniz.
public void yontem1 (System.Drawing.Image img, int genislik, int yukseklik)
{
Bitmap yeniimg = new Bitmap(genislik, yukseklik);
using (Graphics g = Graphics.FromImage((System.Drawing.Image)yeniimg))
g.DrawImage(img, 0, 0, genislik, yukseklik);
yeniimg.Save(Server.MapPath("resimler/") + "yontem1.jpeg");
}
Yukarıdaki yöntemde img ile gelen resmi istenilen ölçülerde resimler klasörünün altına yontem1.jpg adında kaydediyor.
Yöntem 2 :
Bu yöntemde ise işler biraz daha farklılaşıyor.İstediğimiz ölçüleri yolluyoruz fakat resmin çözünürlüğünü koruyabilmek için yolladığımız resmin genişlik ve yuksekliğini istediğimiz ölçülerle oranlayıp yeni bir genişlik ve yüksekli oranı hesaplıyor ve resmi bu ölçüde büyütüyor veya küçültüyor.Daha kısa ifade eecek olursak resmin genişlik ve yükseklik oranını bozmadan ouşturmak isteiğimiz genişlik ve yükselik ölçüsünün içine sığacak şekild aynı oranda resmi tekrar çiziyor. ÖRnek olarak 100*200 px olan bir resimi 50*50px boyutlarına getirmeye çalışırsak resmi bize 50*25px olarak küçültüyor. yöntem1 de ise aynı resim 50*50px olarak tam istenen şekilde kçültülüyordu.
public void yontem2 (System.Drawing.Image img, int istenenEn, int istenenBoy)
{
Size istenenimg = new Size(istenenBoy, istenenEn);
int genislik = img.Width;
int yukseklik = img.Height;
float Oran = 0;
float genislikOranı = 0;
float yukseklikOranı = 0;
genislikOranı = ((float)istenenimg.Width / (float)genislik);
yukseklikOranı = ((float)istenenimg.Height / (float)yukseklik);
if (yukseklikOranı < genislikOranı)
Oran = yukseklikOranı;
else
Oran = genislikOranı;
int yenigenislik = (int)(genislik * Oran);
int yeniyukseklik = (int)(yukseklik * Oran);
Bitmap sonimg = new Bitmap(yenigenislik, yeniyukseklik);
Graphics g = Graphics.FromImage((System.Drawing.Image)sonimg);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(img, 0, 0, yenigenislik, yeniyukseklik);
sonimg.Save(Server.MapPath("Resimler/") + "yontem2.jpg");
}
Umarım faydalı bir yazı olmuştur…
Teşekkürler.
medodu çağıramadım img parametresini bir türlü veremiyorum
yontem1(“resimler/foto1.jpg”,150,100);
böyle olması gerekmiyormu?
kardeş sagol yayın için
3d printer programı için
resmin xyz koordinatlarının bulunması gerekiyor. xy olur yardımcı olursan çok iyi olur
Yapmak istediğiniz şeyi daha net yazarsanız yardımcı olabilirim.
mail atarsan süper olur