做一个框架,少用点数据类,比如只用字符串,整型,短整型,浮点型 就可满足常用需要,如果要处理图像呢?
        public static string GetStringFromImage(Image image)
        {
            if (image == null) return "";            MemoryStream stream = new MemoryStream();
            image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            stream.Position = 0;
            byte[] data = new byte[stream.Length];
            stream.Read(data, 0, (int)stream.Length);
            stream.Close();
            return System.Convert.ToBase64String(data, 0, data.Length);
        }        public static Image GetImageFromString(string str)
        {
            ImageInfo _ImageInfo = new ImageInfo();
            if (String.IsNullOrEmpty(str)) return _ImageInfo;            byte[] bitmapData = new byte[str.Length];
            bitmapData = Convert.FromBase64String(str);
            MemoryStream streamBitmap = new MemoryStream(bitmapData);
            Image image = Image.FromStream(streamBitmap);
            return image;
        }另求BCB 高手翻译成C++ Builder5.0 代码,另开贴给分200

解决方案 »

  1.   

    这个不知道能不能用于数据库的图片保存,文本类型用ntext?
    收藏兼接分
      

  2.   

       AnsiString FileName;
       if(OpenPictureDialog1->Execute())
       {
          FileName=OpenPictureDialog1->FileName ;
          TJPEGImage *img=new TJPEGImage();
          img->LoadFromFile(FileName);
          imgProduct->Picture=(TPicture *)img;      TMemoryStream *MS=new TMemoryStream();
          img->SaveToStream(MS);
          int sSize=MS->Size;
          MS->Position=0;
          byte *DATA=new byte[sSize];
          MS->Read(DATA,sSize);
          
          //此处 DATA 已有数据
           //此处 不如道如何将 DATA 转换为 十六进制字符串
           //有个很笨的办法, 循环DATA,将 char *p=new char[1]; sprint(p,"%x",DATA[i]);
          //但太慢,不现实.
          //但BCB 或 Delphi 窗体设计器中 控件中的图像就是 十六进制字符串保存的,
          //网上找了几天都不知是怎么实现的.      delete DATA;
          delete img;
          delete MS;
       }
      

  3.   

    我要分不过建议娄主,你的代码最好不要返回String,直接返回byte[]就可以了。
      

  4.   

    有实用价值.将图像转为字符串后,存到XML文件,便于传输,共享
      

  5.   

    我是个初学者,看很多人都要注释,我就在这里现个丑了,望高手多多指点!        #region 把图像转换成字符串
    public static string GetStringFromImage(Image image)
            {
    //若图像空就返回空字符串
                if (image == null) return "";
    //实例化一个流
                MemoryStream stream = new MemoryStream();
    //把Jpeg格式的图像存储在流中
                image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
    //流读入的起始点为图像的开头
                stream.Position = 0;
    //实例化一个byte类型的数组
                byte[] data = new byte[stream.Length];
    //在把图像流导入data中
                stream.Read(data, 0, (int)stream.Length);
    //关闭流
                stream.Close();
    返回String类型
                return System.Convert.ToBase64String(data, 0, data.Length);
            }
            #endregion        #region 把字符串转换成图像
            public static Image GetImageFromString(string str)
            {
                //实例化一个图像信息
    ImageInfo _ImageInfo = new ImageInfo();
    //若字符串为空就返回空的图像信息
                if (String.IsNullOrEmpty(str)) return _ImageInfo;
    //确定2进制的bitmapData数组的长度
                byte[] bitmapData = new byte[str.Length];
    //把string类型转换成2进制的数组
                bitmapData = Convert.FromBase64String(str);
    //2进制的数组转化流以便读入
                MemoryStream streamBitmap = new MemoryStream(bitmapData);
    //把刘读入图像
                Image image = Image.FromStream(streamBitmap);
    //返回一张图
                return image;
            }
            #endregion
      

  6.   

            
            #region 把图像转换成字符串
    public static string GetStringFromImage(Image image)
            {
    //若图像空就返回空字符串
                if (image == null) return "";
    //实例化一个流
                MemoryStream stream = new MemoryStream();
    //把Jpeg格式的图像存储在流中
                image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
    //流读入的起始点为图像的开头
                stream.Position = 0;
    //实例化一个byte类型的数组
                byte[] data = new byte[stream.Length];
    //在把图像流导入data中
                stream.Read(data, 0, (int)stream.Length);
    //关闭流
                stream.Close();
    返回String类型
                return System.Convert.ToBase64String(data, 0, data.Length);
            }
            #endregion       #region 把字符串转换成图像
            public static Image GetImageFromString(string str)
            {
                //实例化一个图像信息
    ImageInfo _ImageInfo = new ImageInfo();
    //若字符串为空就返回空的图像信息
                if (String.IsNullOrEmpty(str)) return _ImageInfo;
    //确定2进制的bitmapData数组的长度
                byte[] bitmapData = new byte[str.Length];
    //把string类型转换成2进制的数组
                bitmapData = Convert.FromBase64String(str);
    //2进制的数组转化流以便读入
                MemoryStream streamBitmap = new MemoryStream(bitmapData);
    //把刘读入图像
                Image image = Image.FromStream(streamBitmap);
    //返回一张图
                return image;
            }
            #endregion
      

  7.   

    不错...谢谢...我用得着...BCB的. ..在CCrun.com上有转base64的文章代码.
      

  8.   

    晕,,只贴出一半。ImageInfo类都没有贴出来。。
    期待楼主的完整代码。
      

  9.   

    学习中...............
    next 
     接分,