Пример #1
0
        /*
         * /// <summary>
         * /// 重载加入图片水印
         * /// </summary>
         * /// <param name="picLen"></param>
         * /// <param name="bufPic"></param>
         * /// <param name="Hamming">循环冗余检验</param>
         * /// <param name="markLocate2"></param>
         * /// <param name="TableName"></param>
         * /// <param name="DBType"></param>
         * /// <param name="field"></param>
         * public void PicMark(int picLen, byte[] bufPic, string Hamming, ArrayList[] markLocate2, byte picX, byte picY, string TableName, string DBType, ArrayList field)
         * {
         *  int i;
         *  string mark = "";
         *  string head;
         *  string tail;
         *  int picMarkBit;
         *  picMarkBit = (picLen - 62) * 8 + picX / 4 * 3 * picY;
         *
         *  for (i = 62; i < picLen; i++)
         *  {
         *      string binary = System.Convert.ToString(bufPic[i], 2);
         *      while (binary.Length < 8)
         *      {
         *          binary = binary.Insert(0, "0");
         *      }
         *      head = binary.Substring(0, 4);
         *      tail = binary.Substring(4, 4);
         *      mark = mark + head + Hamming.Substring((i - 62) * 2 * 3, 3) + tail + Hamming.Substring(((i - 62) * 2 + 1) * 3, 3);
         *  }
         *
         *  for (i = 0; i < picMarkBit; i++)
         *  {
         *      DBlink myLink = new DBlink();
         *      myLink.AddPicInfo(mark[i], (int)markLocate2[0][i], (int)markLocate2[1][i], TableName, DBType, field);
         *  }
         * }
         */
        public byte[] GetPic(int picLen, byte picOffset1, byte picOffset2, byte picX, byte picY, ArrayList[] markLocate2, string TableName, string DBType, ArrayList field)
        {
            int    i;
            string temp;
            int    picMarkBit;

            byte[] myPic = new byte[picLen];
            string mark  = "";
            int    count = 0;
            int    key   = 62;

            byte[] head = { 66, 77, picOffset1, picOffset2, 0, 0, 0, 0,   0,   0,  62,   0, 0, 0, 40, 0, 0, 0, picX, 0, 0, 0, picY,
                            0,   0,          0,          1, 0, 1, 0, 0,   0,   0,   0,   0, 0, 0,  0, 0, 0, 0,    0, 0, 0, 0,    0,2, 0, 0,
                            0,   2,          0,          0, 0, 0, 0, 0, 255, 255, 255, 255, 255 };


            picMarkBit = (picLen - 62) * 8;

            for (i = 0; i < picMarkBit; i++)
            {
                DBlink myLink = new DBlink();
                temp = myLink.GetPicInfo((int)markLocate2[0][i], (int)markLocate2[1][i], TableName, DBType, field);

                if ((int)temp[temp.Length - 1] == 8204)
                {
                    mark += 0;
                }
                else
                {
                    mark += 1;
                }

                count++;
                if (count == 8)
                {
                    count      = 0;
                    myPic[key] = System.Convert.ToByte(mark, 2);
                    mark       = "";
                    key++;
                }
            }
            for (i = 0; i < 62; i++)
            {
                myPic[i] = head[i];
            }

            return(myPic);
        }
        /*
       /// <summary>
        /// 重载加入图片水印
       /// </summary>
       /// <param name="picLen"></param>
       /// <param name="bufPic"></param>
        /// <param name="Hamming">循环冗余检验</param>
       /// <param name="markLocate2"></param>
       /// <param name="TableName"></param>
       /// <param name="DBType"></param>
       /// <param name="field"></param>
        public void PicMark(int picLen, byte[] bufPic, string Hamming, ArrayList[] markLocate2, byte picX, byte picY, string TableName, string DBType, ArrayList field)
        {
            int i;
            string mark = "";
            string head;
            string tail;
            int picMarkBit;
            picMarkBit = (picLen - 62) * 8 + picX / 4 * 3 * picY;

            for (i = 62; i < picLen; i++)
            {
                string binary = System.Convert.ToString(bufPic[i], 2);
                while (binary.Length < 8)
                {
                    binary = binary.Insert(0, "0");
                }
                head = binary.Substring(0, 4);
                tail = binary.Substring(4, 4);
                mark = mark + head + Hamming.Substring((i - 62) * 2 * 3, 3) + tail + Hamming.Substring(((i - 62) * 2 + 1) * 3, 3);
            }

            for (i = 0; i < picMarkBit; i++)
            {
                DBlink myLink = new DBlink();
                myLink.AddPicInfo(mark[i], (int)markLocate2[0][i], (int)markLocate2[1][i], TableName, DBType, field);
            }
        }
*/
        public byte[] GetPic(int picLen, byte picOffset1, byte picOffset2, byte picX, byte picY, ArrayList[] markLocate2, string TableName, string DBType, ArrayList field)
        {
            int i;
            string temp;
            int picMarkBit;
            byte[] myPic = new byte[picLen];
            string mark = "";
            int count = 0;
            int key = 62;
            byte[] head = {66,77,picOffset1,picOffset2,0,0,0,0,0,0,62,0,0,0,40,0,0,0,picX,0,0,0,picY,
                              0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
                              0,2,0,0,0,0,0,0,255,255,255,255,255};


            picMarkBit = (picLen - 62) * 8;

            for (i = 0; i < picMarkBit; i++)
            {
                DBlink myLink = new DBlink();
                temp = myLink.GetPicInfo((int)markLocate2[0][i], (int)markLocate2[1][i], TableName, DBType, field);

                if ((int)temp[temp.Length - 1] == 8204)
                    mark += 0;
                else
                    mark += 1;

                count++;
                if (count == 8)
                {
                    count = 0;
                    myPic[key] = System.Convert.ToByte(mark, 2);
                    mark = "";
                    key++;
                }
            }
            for (i = 0; i < 62; i++)
            {
                myPic[i] = head[i];
            }

            return myPic;
        }