static void Diziyaz(durum d, Array dizi) { if (d == durum.yanına) { foreach (var item in dizi) { Console.Write(item + " "); } Console.WriteLine(""); } if (d == durum.altına) { foreach (var item in dizi) { Console.WriteLine(item + " "); } } }
public static Bitmap embedText(string text, Bitmap bmp) { durum drm = durum.gizli; // Başlangıçta, görüntüdeki karakterleri saklanıyor olacak int charIndex = 0; // gizli olan karakterin dizinini tutar int charValue = 0; // karakter değeri tamsayı dönüştürülür tutar long pixelElementIndex = 0; // Şu anda işlenen renk elemanının indeksi (R ya da G veya B) tutar int zeros = 0; // sondaki sıfırların sayısını tutar int R = 0, G = 0, B = 0; // Tutulan piksel elemanları for (int i = 0; i < bmp.Height; i++) { for (int j = 0; j < bmp.Width; j++) { Color pixel = bmp.GetPixel(j, i); // Şu Anda işlenen piksel tutar // her piksel elemanı en az önemli bit (LSB) temizleme R = pixel.R - pixel.R % 2; G = pixel.G - pixel.G % 2; B = pixel.B - pixel.B % 2; for (int n = 0; n < 3; n++) { // Yeni 8 bit işlenmiş olup olmadığını kontrol eder. if (pixelElementIndex % 8 == 0) { // Tüm süreç bitmiş olup olmadığını kontrol edin // Biz 8 sıfır eklendiğinde bu bitmiş olduğunu söyleyebiliriz if (drm == durum.Filling_With_Zeros && zeros == 8) { // elementlerden sadece bir parçası etkilenmiş olsa bile Görüntünün son pikseli uygulama if ((pixelElementIndex - 1) % 3 < 2) { bmp.SetPixel(j, i, Color.FromArgb(R, G, B)); } // Gizli metini bitmap ile döndürme return(bmp); } // Tüm karakterler gizli olup olmadığını kontrol eder if (charIndex >= text.Length) { // Metnin sonuna işaretlemek için sıfır ekleyerek başlar drm = durum.Filling_With_Zeros; } else { // Tekrar sonraki karaktere ve süreç taşıma charValue = text[charIndex++]; } } // LSB den alınan bitlerin hangi piksel elemanları oldugunu kontrol eder switch (pixelElementIndex % 3) { case 0: { if (drm == durum.gizli) { /* en sağdaki bit karakter (charValue % 2) * Bu değer yerine piksel öğe LSB koyma * LSB piksel öğesinin işaretli hatırlama */ R += charValue % 2; // Karakter eklendi sağdaki bit kaldırıldı // Bir sonraki sefere ulaşabilmek için charValue /= 2; } } break; case 1: { if (drm == durum.gizli) { G += charValue % 2; charValue /= 2; } } break; case 2: { if (drm == durum.gizli) { B += charValue % 2; charValue /= 2; } bmp.SetPixel(j, i, Color.FromArgb(R, G, B)); } break; } pixelElementIndex++; if (drm == durum.Filling_With_Zeros) { // 8 olana kadar sıfır değerini artırır zeros++; } } } } return(bmp); }