Beispiel #1
0
        private static byte ByteComposition(StByte b, bool alpha)
        {
            byte result = 0;

            result += (byte)(b.a1 * 100);
            if (alpha)
            {
                switch (b.a4)
                {
                case 2:
                    b.a2 += 5;
                    b.a3 += 5;
                    break;

                case 3:
                    b.a2 += 5;
                    break;

                case 4:
                    b.a3 += 5;
                    break;
                }
            }
            result += (byte)(b.a2 * 10);
            result += b.a3;
            return(result);
        }
Beispiel #2
0
 private static Pix MixByteAndPixel(Pix p, StByte b)
 {
     p.blue = (byte)(((byte)(p.blue / 10)) * 10);
     if (p.blue == 250)
     {
         p.blue = 240;
     }
     p.blue += b.a1;
     p.green = (byte)(((byte)(p.green / 10)) * 10);
     if (p.green == 250)
     {
         p.green = 240;
     }
     p.green += b.a2;
     p.red    = (byte)(((byte)(p.red / 10)) * 10);
     if (p.red == 250)
     {
         p.red = 240;
     }
     p.red  += b.a3;
     p.alpha = (byte)(((byte)(p.alpha / 10)) * 10);
     if (p.alpha == 250)
     {
         p.alpha = 240;
     }
     p.alpha += b.a4;
     return(p);
 }
Beispiel #3
0
 internal static byte[] Extraction(byte[] img)
 {
     byte[] length = new byte[4];
     byte[] data   = null;
     using (var bmp = (Bitmap)Image.FromStream(new MemoryStream(img)))
     {
         int  index = 0;
         bool end   = false;
         unsafe
         {
             BitmapData bmd      = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
             int        size     = bmd.Stride / bmp.Width;
             bool       hasAlpha = size == 4;
             for (int y = 0; y < bmp.Height; y++)
             {
                 for (int x = 0; x < bmp.Width; x++)
                 {
                     int offset = (y * bmd.Stride) + (x * size);
                     Pix pix    = new Pix
                     {
                         blue  = ((byte *)bmd.Scan0)[offset],
                         green = ((byte *)bmd.Scan0)[offset + 1],
                         red   = ((byte *)bmd.Scan0)[offset + 2],
                         alpha = ((hasAlpha) ? ((byte *)bmd.Scan0)[offset + 3] : (byte)255)
                     };
                     StByte b  = SecretionByteFromPixel(pix);
                     byte   wb = ByteComposition(b, hasAlpha);
                     if (data == null)
                     {
                         length[index] = wb;
                         index++;
                         if (index == 4)
                         {
                             data  = new byte[BitConverter.ToInt32(length, 0)];
                             index = 0;
                         }
                     }
                     else
                     {
                         data[index] = wb;
                         index++;
                         if (index >= data.Length)
                         {
                             end = true;
                             break;
                         }
                     }
                 }
                 if (end)
                 {
                     break;
                 }
             }
             bmp.UnlockBits(bmd);
         }
     }
     return(data);
 }
Beispiel #4
0
        private static StByte SecretionByteFromPixel(Pix p)
        {
            StByte result = new StByte();

            result.a1 = (byte)(p.blue - ((byte)(p.blue / 10)) * 10);
            result.a2 = (byte)(p.green - ((byte)(p.green / 10)) * 10);
            result.a3 = (byte)(p.red - ((byte)(p.red / 10)) * 10);
            result.a4 = (byte)(p.alpha - ((byte)(p.alpha / 10)) * 10);
            return(result);
        }
Beispiel #5
0
        private static StByte ByteDecomposition(byte b, bool alpha)
        {
            StByte result = new StByte();

            while (b > 99)
            {
                result.a1++;
                b -= 100;
            }
            while (b > 9)
            {
                result.a2++;
                b -= 10;
            }
            result.a3 = b;
            if (alpha)
            {
                if (result.a2 >= 5 && result.a3 >= 5)
                {
                    result.a4  = 2;
                    result.a2 -= 5;
                    result.a3 -= 5;
                }
                else if (result.a2 >= 5)
                {
                    result.a4  = 3;
                    result.a2 -= 5;
                }
                else if (result.a3 >= 5)
                {
                    result.a4  = 4;
                    result.a3 -= 5;
                }
                else
                {
                    result.a4 = 5;
                }
            }
            else
            {
                result.a4 = 5;
            }
            return(result);
        }
 private static StByte ByteDecomposition(byte b, bool alpha)
 {
     StByte result = new StByte();
     while (b > 99)
     {
         result.a1++;
         b -= 100;
     }
     while (b > 9)
     {
         result.a2++;
         b -= 10;
     }
     result.a3 = b;
     if (alpha)
     {
         if (result.a2 >= 5 && result.a3 >= 5)
         {
             result.a4 = 2;
             result.a2 -= 5;
             result.a3 -= 5;
         }
         else if (result.a2 >= 5)
         {
             result.a4 = 3;
             result.a2 -= 5;
         }
         else if (result.a3 >= 5)
         {
             result.a4 = 4;
             result.a3 -= 5;
         }
         else
         {
             result.a4 = 5;
         }
     }
     else
     {
         result.a4 = 5;
     }
     return result;
 }
 private static byte ByteComposition(StByte b, bool alpha)
 {
     byte result = 0;
     result += (byte)(b.a1 * 100);
     if (alpha)
     {
         switch (b.a4)
         {
             case 2:
                 b.a2 += 5;
                 b.a3 += 5;
                 break;
             case 3:
                 b.a2 += 5;
                 break;
             case 4:
                 b.a3 += 5;
                 break;
         }
     }
     result += (byte)(b.a2 * 10);
     result += b.a3;
     return result;
 }
 private static StByte SecretionByteFromPixel(Pix p)
 {
     StByte result = new StByte();
     result.a1 = (byte)(p.blue - ((byte)(p.blue / 10)) * 10);
     result.a2 = (byte)(p.green - ((byte)(p.green / 10)) * 10);
     result.a3 = (byte)(p.red - ((byte)(p.red / 10)) * 10);
     result.a4 = (byte)(p.alpha - ((byte)(p.alpha / 10)) * 10);
     return result;
 }
 private static Pix MixByteAndPixel(Pix p, StByte b)
 {
     p.blue = (byte)(((byte)(p.blue / 10)) * 10);
     if (p.blue == 250) p.blue = 240;
     p.blue += b.a1;
     p.green = (byte)(((byte)(p.green / 10)) * 10);
     if (p.green == 250) p.green = 240;
     p.green += b.a2;
     p.red = (byte)(((byte)(p.red / 10)) * 10);
     if (p.red == 250) p.red = 240;
     p.red += b.a3;
     p.alpha = (byte)(((byte)(p.alpha / 10)) * 10);
     if (p.alpha == 250) p.alpha = 240;
     p.alpha += b.a4;
     return p;
 }