/// <summary>
/// 将图片文件以二进制形式存储至数据库
/// </summary>
/// <param name="picPath">图像路径</param>
/// <returns>byte[]类型</returns>
public void StoreImageData(string imagePath)
{
int split1 = imagePath.LastIndexOfAny("\\".ToCharArray()) + 1;
int split2 = imagePath.LastIndexOf('.');
string imageName = imagePath.Substring(split1, split2 - split1);
//根据图片文件的路径使用文件流打开,并保存为byte[]
FileStream fs = new FileStream(imagePath, FileMode.Open);
byte[] imageData = new byte[fs.Length];
fs.Read(imageData, 0, imageData.Length);
fs.Close();
#region 图片信息存储至数据库
SqlParameter [] imageInfo={new SqlParameter ("@ImageName",SqlDbType .VarChar ,20),new SqlParameter ("@ImageData",SqlDbType .Image)};
imageInfo[0].Value = imageName;
imageInfo[1].Value = imageData;
sqlConnect.ExecuteDataTable("dlx_addLinkImage", imageInfo);
#endregion
}
/// <summary>
/// 读取二进制图像信息,获取图片对象
/// </summary>
/// <param name="imageData">byte[]类型</param>
/// <returns>图片对象</returns>
public System.Drawing.Image GetImage(byte[] imageData)
{
MemoryStream ms = new MemoryStream(imageData);
Image linkImage = Image.FromStream(ms);
return linkImage;
}
public byte[] convertImageToByte(Image img)
{
if (img == null) return null ;
using (MemoryStream ms = new MemoryStream())
{
Bitmap bmp = new Bitmap(img);
bmp.Save(ms, ImageFormat.Jpeg);
byte[] data = new byte[ms.Length];
ms.Position = 0;
ms.Read(data, 0, Convert.ToInt32(ms.Length));
bmp.Dispose();
return data;
}
}
/// <summary>
/// 从根据图像名称从数据库读取图像二进制信息
/// </summary>
/// <param name="imageName">图像名称</param>
/// <returns>图像信息</returns>
public byte [] GetImageFromSql(string imageName)
{
byte[] imageData=null;
SqlParameter[] imagePar = {new SqlParameter("@ImageName", SqlDbType.VarChar, 20)};
imagePar[0].Value = imageName;
imageData=sqlConnect.ExecuteDataReader("dlx_getImage", imagePar);
return imageData;
}