做一个框架,少用点数据类,比如只用字符串,整型,短整型,浮点型 就可满足常用需要,如果要处理图像呢?
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
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
收藏兼接分
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;
}
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
#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
期待楼主的完整代码。
next
接分,