请哪位高手帮我把存储过程和调用函数写出来,谢谢

解决方案 »

  1.   

    图元信息转换成16进制数据(需标记为unsafe) 
     
    using System;
    using System.Drawing;
    using System.Drawing.Imaging;namespace Stepx.Class
    {
     /// <summary>
     /// ImageConvert 的摘要说明。
     /// </summary>
     public class ImageConvert
     {
      public ImageConvert()
      {
       //
       // TODO: 在此处添加构造函数逻辑
       //
      }  public static string ImageToHex(Bitmap t_oImage)
      {
       string sReturn = "";
       string sBin = "";
       string sHex = "";
       int iTemp = 0;   //--------取图元数据---------
       BitmapData oData = t_oImage.LockBits(
        new Rectangle(0,0,t_oImage.Width,t_oImage.Height)
        ,ImageLockMode.ReadOnly
        ,PixelFormat.Format24bppRgb);
       //---------------------------   IntPtr iScan0 = oData.Scan0;   string[] sBins = new string[t_oImage.Height*t_oImage.Width];
       iTemp = 0;
       unsafe
       {
        byte* p = (byte*)(void*)iScan0;
        int nOffset = oData.Stride - t_oImage.Width*3;
        byte nRed,nGreen,nBlue;    for (int y=0;y<t_oImage.Height;y++)
        {
         for (int x=0;x<t_oImage.Width;x++)
         {
          nBlue = p[0];
          nGreen = p[1];
          nRed = p[2];      if (nBlue == 255 && nGreen == 255 && nBlue == 255)
           sBins[iTemp] = "0";
          else
           sBins[iTemp] = "1";      p += 3;
          iTemp++;
         }     p+= nOffset;
        }
       }   t_oImage.UnlockBits(oData);   sBin = string.Join("",sBins);
       iTemp = 0;
       //---------进制转换-----------
       while (iTemp<t_oImage.Height*t_oImage.Width)
       {
        switch (sBin.Substring(iTemp,4))
        {
         case "0000":
          sHex += "0";
          break;
         case "0001":
          sHex += "1";
          break;
         case "0010":
          sHex += "2";
          break;
         case "0011":
          sHex += "3";
          break;
         case "0100":
          sHex += "4";
          break;
         case "0101":
          sHex += "5";
          break;
         case "0110":
          sHex += "6";
          break;
         case "0111":
          sHex += "7";
          break;
         case "1000":
          sHex += "8";
          break;
         case "1001":
          sHex += "9";
          break;
         case "1010":
          sHex += "A";
          break;
         case "1011":
          sHex += "B";
          break;
         case "1100":
          sHex += "C";
          break;
         case "1101":
          sHex += "D";
          break;
         case "1110":
          sHex += "E";
          break;
         case "1111":
          sHex += "F";
          break;
        }
        iTemp += 4;
       }
       //----------------------------   //-------图片头信息--------
       int iHeight = t_oImage.Height/8;
       int iWidth = t_oImage.Width/8;
       //-------------------------
       string sHead= "GH" + iWidth.ToString().PadLeft(3,'0') + iHeight.ToString().PadLeft(3,'0');
       sReturn = sHead + sHex;   return sReturn;
      }
     }