Merhaba Webkolog okurları,
Bugün sizlere, C# .NET Framework 4 ve Microsoft Visual
Studio 2010 kullanarak, resimler üzerinde çeşitli işlemlerin nasıl yapılacağını
anlatacağım. Bu işlemler, resimlerin opaklığını ayarlamak, kırpmak ve döndürmek
gibi temel ama oldukça kullanışlı fonksiyonları içerir.
Giriş
.NET Framework, System.Drawing namespace'i ile resim
işleme için zengin bir altyapı sunar. Bu makalede, bu altyapıyı kullanarak
resimleri nasıl manipüle edebileceğimize odaklanacağız.
1. Resim Opaklığını
Değiştirme
Resmin opaklığını değiştirmek, bir resmi daha şeffaf
veya daha belirgin hale getirmek için kullanılır. Bu, özellikle resimleri bir
araya getirirken veya bir resmin üzerine metin yazarken faydalı olabilir.
public Bitmap ChangeOpacity(Image img, float opacityvalue)
{
Bitmap bmp = new Bitmap(img.Width, img.Height);
Graphics graphics = Graphics.FromImage(bmp);
ColorMatrix colormatrix = new ColorMatrix();
colormatrix.Matrix33 = opacityvalue;
ImageAttributes imgAttribute = new ImageAttributes();
imgAttribute.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
graphics.DrawImage(img, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, imgAttribute);
graphics.Dispose();
return bmp;
}
- ChangeOpacity metodu, bir Image nesnesi ve bir
float opaklık değeri alır. Opaklık değeri 0 ile 1 arasında olmalıdır (0:
tamamen şeffaf, 1: tamamen opak).
- Yeni bir Bitmap oluşturulur ve Graphics nesnesi
kullanılarak bu bitmap üzerine çizim yapılır.
- ColorMatrix sınıfı, renk dönüşümleri için bir
matris tanımlar. Burada, sadece opaklık değeri değiştirilir
(colormatrix.Matrix33 = opacityvalue).
- ImageAttributes sınıfı, resme uygulanacak renk
dönüşümlerini belirtir.
- graphics.DrawImage metodu, resmi belirtilen
opaklık değeriyle yeni bitmap üzerine çizer.
- Son olarak, Graphics nesnesi dispose edilir ve
yeni Bitmap döndürülür.
2. Resim Kırpma
Resim kırpma, bir resmin belirli bir bölümünü almak
için kullanılır. Bu, resmin istenmeyen kısımlarını çıkarmak veya belirli bir
bölgeye odaklanmak için faydalıdır.
private Bitmap cropImg(Bitmap b, Rectangle r)
{
Bitmap nb = new Bitmap(r.Width, r.Height);
Graphics gr = Graphics.FromImage(nb);
gr.DrawImage(b, -r.X, -r.Y);
return nb;
}
- cropImg metodu, bir Bitmap nesnesi ve bir
Rectangle nesnesi alır. Rectangle nesnesi, kırpılacak bölgenin
koordinatlarını ve boyutlarını belirtir.
- Yeni bir Bitmap oluşturulur ve Graphics nesnesi
kullanılarak bu bitmap üzerine çizim yapılır.
- gr.DrawImage metodu, kaynak bitmap'in belirtilen
bölgesini yeni bitmap üzerine çizer. Burada, negatif X ve Y değerleri
kullanılarak, kaynak resmin kırpılacak bölümünün yeni resmin sol üst
köşesine denk gelmesi sağlanır.
- Son olarak, yeni Bitmap döndürülür.
3. Resim Çevirme
Resim çevirme, bir resmi belirli bir açıya döndürmek
için kullanılır. Bu, resmin yönünü değiştirmek veya estetik efektler oluşturmak
için faydalıdır.
Image img = Image.FromFile("F-2-1-1a.gif"); //Örnek bir resim yükleniyor.
img.RotateFlip(RotateFlipType.Rotate270FlipNone); //Resmi döndürmek ve aynalamak için kullanılan kısa bir yöntem.
private Bitmap rotateImage(Bitmap b, float angle)
{
Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
Graphics g = Graphics.FromImage(returnBitmap);
g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
g.RotateTransform(angle);
g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
g.DrawImage(b, new Point(0, 0));
return returnBitmap;
}
- rotateImage metodu, bir Bitmap nesnesi ve bir
float açı değeri alır. Açı değeri, resmin saat yönünde kaç derece
döndürüleceğini belirtir.
- Yeni bir Bitmap oluşturulur ve Graphics nesnesi
kullanılarak bu bitmap üzerine çizim yapılır.
- g.TranslateTransform metodu, koordinat sistemini
resmin merkezine taşır.
- g.RotateTransform metodu, koordinat sistemini
belirtilen açıya döndürür.
- İkinci g.TranslateTransform metodu, koordinat
sistemini tekrar sol üst köşeye taşır.
- g.DrawImage metodu, döndürülmüş koordinat
sistemiyle resmi yeni bitmap üzerine çizer.
- Son olarak, yeni Bitmap döndürülür.
Kullanım Örnekleri
// Bir resmi dosyadan yükleme
Image orjinalResim = Image.FromFile("C:\\Resimler\\ornek.jpg");
// Opaklığı değiştirme
Bitmap opakResim = ChangeOpacity(orjinalResim, 0.5f); // %50 opaklık
opakResim.Save("C:\\Resimler\\opak_resim.jpg");
// Resmi kırpma
Rectangle kirpmaBolgesi = new Rectangle(50, 50, 100, 100); // (X, Y, Genişlik, Yükseklik)
Bitmap kirpilmisResim = cropImg(new Bitmap(orjinalResim), kirpmaBolgesi);
kirpilmisResim.Save("C:\\Resimler\\kirpilmis_resim.jpg");
// Resmi döndürme
Bitmap donmusResim = rotateImage(new Bitmap(orjinalResim), 90); // 90 derece döndürme
donmusResim.Save("C:\\Resimler\\donmus_resim.jpg");
Bu örnekler, metotların nasıl kullanılacağını ve
sonuçların nasıl kaydedileceğini göstermektedir. Image.FromFile metodu ile
belirtilen dosya yolundan bir resim okunur. Ardından, oluşturulan Bitmap
nesneleri üzerinde çeşitli işlemler yapılır ve sonuçlar yeni dosyalara
kaydedilir.
Sonuç
Bu makalede, C# ve .NET Framework'ü kullanarak resimler üzerinde temel işlemleri nasıl gerçekleştirebileceğimizi gördük. Bu metotlar, resim işleme gerektiren birçok uygulama için temel oluşturabilir. Unutmayın, System.Drawing namespace'i çok daha fazla özellik sunar, bu yüzden keşfetmeye devam edin.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve keyifli öğrenme süreçleri
dilerim!
0 yorum:
Yorum Gönder