C#里面使用数据库存储图片并读取图片,图片集失真问题
C#里面使用数据库存储图片并读取图片,并且在C#作出的窗体,,显示成QQ头像那样的图片集,+问,图片集失真问题。。。800*500的图片,,使用图片集显示要失真。。我想做...
C#里面使用数据库存储图片并读取图片,并且在C#作出的窗体,,显示成QQ头像那样的图片集,+问,图片集失真问题。。。800*500的图片,,使用图片集显示要失真。。我想做个相册,别说用图片框存路径。。。跪求大神解答
展开
3个回答
2013-09-19
展开全部
你用数据流来将图片互转,当然会失真!!!你既然用VS那你应该也会用SQL吧,,1,在sql中建个表,专门用来存图片的名字。2,在VS里连接数据库,并建个images文件夹来村图片,3,写个根据ID查找的触发器,用fileupload控件浏览要保存的图片,并保持。引用空间,using System.IO; 【HttpPostedFile hpf = FileUpload1.PostedFile;
string name = hpf.FileName;
string filename = Path.GetFileName(name);
hpf.SaveAs(Server.MapPath("images") + "\\" + filename);】上传图片的代码, 要取出的时候将图片显示在image控件中,Image1.ImageUrl ="images\\"+ ds.Tables[0].Rows[0]["photo"].ToString();(images控件的URL)*******操作要在连接了数据库的前提下才行*********
string name = hpf.FileName;
string filename = Path.GetFileName(name);
hpf.SaveAs(Server.MapPath("images") + "\\" + filename);】上传图片的代码, 要取出的时候将图片显示在image控件中,Image1.ImageUrl ="images\\"+ ds.Tables[0].Rows[0]["photo"].ToString();(images控件的URL)*******操作要在连接了数据库的前提下才行*********
2013-09-19
展开全部
存路径不会失真,如果存的是image类型的话 给你个例子,刚好最近做项目做过。protected void linSaveImg_Click(object sender, EventArgs e)
{
string fileName = this.GenFileName();
string FileLastName = fileName.Substring(fileName.LastIndexOf(".") + 1);//得到文件的扩展名
List<QueryCriteria> condList = new List<QueryCriteria>()
{
new QueryCriteria(){ FieldName="SP_GUID", Comparison= EnumSqlComparison.Equal, Value=guid}
};
SHANGPIN2Info shangpin = new SHANGPIN2().GetFirst(condList);
Stream ImageStream;
string Path = fileName;// 文件名称
int Size = FileLoadIMG.PostedFile.ContentLength; // 文件大小【不处理它的话一定不会失真
】 string Type = FileLoadIMG.PostedFile.ContentType; // 文件类型
ImageStream = FileLoadIMG.PostedFile.InputStream;
shangpin.IMAGES2 = System.Drawing.Image.FromStream(ImageStream);
shangpin.SP_GUID = guid;
SHANGPINInfo sp = new SHANGPIN().GetEntity(guid);
sp.Images = shangpin.IMAGES2;
new SHANGPIN().Update(sp);
new SHANGPIN2().Update(shangpin);
}
/// <summary>
/// 循环生成新的文件名
/// </summary>
/// <returns></returns>
private string GenFileName()
{
string FileName = this.FileLoadIMG.FileName;//获取文件名
string FileLastName = FileName.Substring(FileName.LastIndexOf(".") + 1);//得到文件的扩展名
string FileTime = DateTime.Now.ToString("yyyyMMddHHmmss");//得到系统时间(格式化)并加上随机数以便生成上传图片名称
FileName = FileTime + "." + FileLastName;//产生上传图片的名称
return FileName;
} 读图片private void GetProductImage(HttpContext context)
{
if (context.Request.QueryString["PID"] != null)
{
spguid = context.Request.QueryString["PID"].ToString();
SHANGPINInfo spM = new SHANGPINInfo();
SHANGPIN BLL = new SHANGPIN();
spM = BLL.GetEntity(spguid);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
if (spM.Images != null)
{
spM.Images.Save(ms, spM.Images.RawFormat);
byte[] pic = ms.ToArray();
ms.Close();
ms.Dispose();
context.Response.ContentType = "image/Gif";
context.Response.BinaryWrite(pic);
}
else
{
context.Response.Write("暂无图片");
}
}
}
<img id="MiddleImage" src='<%=Common.GetPic(guid,true) %>' />
#region 获取商品图片
public static string GetPic(string spguid)
{
return ApplicationPath + "/Handler/ProductImgHandler.ashx?PID=" + spguid;
}
{
string fileName = this.GenFileName();
string FileLastName = fileName.Substring(fileName.LastIndexOf(".") + 1);//得到文件的扩展名
List<QueryCriteria> condList = new List<QueryCriteria>()
{
new QueryCriteria(){ FieldName="SP_GUID", Comparison= EnumSqlComparison.Equal, Value=guid}
};
SHANGPIN2Info shangpin = new SHANGPIN2().GetFirst(condList);
Stream ImageStream;
string Path = fileName;// 文件名称
int Size = FileLoadIMG.PostedFile.ContentLength; // 文件大小【不处理它的话一定不会失真
】 string Type = FileLoadIMG.PostedFile.ContentType; // 文件类型
ImageStream = FileLoadIMG.PostedFile.InputStream;
shangpin.IMAGES2 = System.Drawing.Image.FromStream(ImageStream);
shangpin.SP_GUID = guid;
SHANGPINInfo sp = new SHANGPIN().GetEntity(guid);
sp.Images = shangpin.IMAGES2;
new SHANGPIN().Update(sp);
new SHANGPIN2().Update(shangpin);
}
/// <summary>
/// 循环生成新的文件名
/// </summary>
/// <returns></returns>
private string GenFileName()
{
string FileName = this.FileLoadIMG.FileName;//获取文件名
string FileLastName = FileName.Substring(FileName.LastIndexOf(".") + 1);//得到文件的扩展名
string FileTime = DateTime.Now.ToString("yyyyMMddHHmmss");//得到系统时间(格式化)并加上随机数以便生成上传图片名称
FileName = FileTime + "." + FileLastName;//产生上传图片的名称
return FileName;
} 读图片private void GetProductImage(HttpContext context)
{
if (context.Request.QueryString["PID"] != null)
{
spguid = context.Request.QueryString["PID"].ToString();
SHANGPINInfo spM = new SHANGPINInfo();
SHANGPIN BLL = new SHANGPIN();
spM = BLL.GetEntity(spguid);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
if (spM.Images != null)
{
spM.Images.Save(ms, spM.Images.RawFormat);
byte[] pic = ms.ToArray();
ms.Close();
ms.Dispose();
context.Response.ContentType = "image/Gif";
context.Response.BinaryWrite(pic);
}
else
{
context.Response.Write("暂无图片");
}
}
}
<img id="MiddleImage" src='<%=Common.GetPic(guid,true) %>' />
#region 获取商品图片
public static string GetPic(string spguid)
{
return ApplicationPath + "/Handler/ProductImgHandler.ashx?PID=" + spguid;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-19
展开全部
SQL2005数据库里保存的图片是黑白的,可以尝试用Oracle
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询