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 + " ");
                }
            }
        }
예제 #2
0
        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);
        }