数据库图形提取异常 高手们帮我看看:由数据库中提取存储图形的字段转换成图形,出现上图错位、变色的现象,是什么原因?效果图如附图谢谢!提取的是sybase15数据库中的资料 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转图的代码: #region //存图 /// <summary> /// 图形转换 /// </summary> /// <param name="connStr">连接字符串</param> protected void PicOut(string connStr) { OdbcConnection oDconn = new OdbcConnection(connStr); string fn = ""; string pth = ""; string cmdSet = "set textsize 2147483647"; string sltStr = "set rowcount 60 SELECT FNAME, FLEN,FDAT FROM FCGRAPH where FNAME like '%SB%' order by RT desc "; OdbcCommand ocmdSet = new OdbcCommand(cmdSet, oDconn); OdbcCommand cmd = new OdbcCommand(sltStr,oDconn); oDconn.Open(); int m = 0;#region try { ocmdSet.ExecuteNonQuery(); OdbcDataReader odr =cmd.ExecuteReader(); while(odr.Read()) { int ln = (int)odr["FLEN"]; if(ln > 20000) { fn = (string)odr["FNAME"]; pth = pthSGMT + fn.Trim().Remove(9,1).Remove(0,1) + ".GIF"; FileInfo fi = new FileInfo(pth); FileStream myStream = fi.Open(FileMode.Create); byte[] myBt = (Byte[])odr["FDAT"]; foreach (byte a in myBt) { myStream.WriteByte(a); } myStream.Dispose(); string dt = DateTime.Now.ToString(); string[] shwMsg = new string[] { fn.Trim().Remove(9, 1).Remove(0, 1) + ".GIF", dt }; listView1.Items.Add(new ListViewItem(shwMsg)); if(chkbRedu.Checked == true) { mkDir(pthSGMT.Insert(pthSGMT.Length -1,rd)); //图形缩小部分,但效果都不理想 reducePic2(pth,m_width); } } m++; } odr.Dispose(); } catch(Exception e) { lgw.WriteLog("航路图提取", e.Message); } finally { oDconn.Close(); }#endregion statusBar1.Panels[2].Text = "现在正在处理航路图"; } 是否字节变量的长度超过了int型的最大值? 回复:zhoufoxcn 数据库中的文件格式没有明确,但是我将他们转化成JPG、GIF、BMP均可,程序以前是访问unix下的Sybase12的数据库,已经使用很多年了,转化成GIF,一点问题也没有。目前因为同样的数据库被转到了Linux下Sybase15的库中,开始转时,图像只有上面一寸左右高度能够显示,下面的什么也没有,后来请教高手后,在查询之前先进行了“set textsize 2147483647”的动作,目前转图中有5%左右的图像出现上面图像的现象,其它大部分图形正常。另外,有一个有价值的线索:我在每次提取、保存时,出现异常的图 不固定,有时是这张,使用覆盖的模式保存,下一次或许这张好了,另外一张原来好的可能出现了问题。请高手们帮忙诊断一下原因?为什么错位?为什么变色?是哪里的长度设定?还是 关于foreach语句在C#4.5中的改进 如何将本机获取到的摄像头画面实时的传输给别的主机? 如果得到Test工程的相对路径 求.net的MVC 学习文档. 查询的返回值 数据库标识符问题 C# 在图片上画出空心字体有没有谁会阿。。 不知道是什么问题 谁遇到过这样的问题 用户注册时如何确保信息的安全? 我用 Oracle.DataAccess 驱动 NHibernate 连接的问题 GridView的任务面板在哪打开
#region //存图
/// <summary>
/// 图形转换
/// </summary>
/// <param name="connStr">连接字符串</param>
protected void PicOut(string connStr)
{
OdbcConnection oDconn = new OdbcConnection(connStr); string fn = "";
string pth = "";
string cmdSet = "set textsize 2147483647";
string sltStr = "set rowcount 60 SELECT FNAME, FLEN,FDAT FROM FCGRAPH where FNAME like '%SB%' order by RT desc ";
OdbcCommand ocmdSet = new OdbcCommand(cmdSet, oDconn);
OdbcCommand cmd = new OdbcCommand(sltStr,oDconn);
oDconn.Open(); int m = 0;
#region
try
{
ocmdSet.ExecuteNonQuery(); OdbcDataReader odr =cmd.ExecuteReader();
while(odr.Read())
{
int ln = (int)odr["FLEN"];
if(ln > 20000)
{
fn = (string)odr["FNAME"];
pth = pthSGMT + fn.Trim().Remove(9,1).Remove(0,1) + ".GIF";
FileInfo fi = new FileInfo(pth);
FileStream myStream = fi.Open(FileMode.Create);
byte[] myBt = (Byte[])odr["FDAT"]; foreach (byte a in myBt)
{
myStream.WriteByte(a);
}
myStream.Dispose(); string dt = DateTime.Now.ToString();
string[] shwMsg = new string[] { fn.Trim().Remove(9, 1).Remove(0, 1) + ".GIF", dt };
listView1.Items.Add(new ListViewItem(shwMsg));
if(chkbRedu.Checked == true)
{
mkDir(pthSGMT.Insert(pthSGMT.Length -1,rd));
//图形缩小部分,但效果都不理想
reducePic2(pth,m_width);
}
}
m++;
}
odr.Dispose(); }
catch(Exception e)
{
lgw.WriteLog("航路图提取", e.Message);
}
finally
{
oDconn.Close();
}
#endregion
statusBar1.Panels[2].Text = "现在正在处理航路图"; }
目前因为同样的数据库被转到了Linux下Sybase15的库中,开始转时,图像只有上面一寸左右高度能够显示,下面的什么也没有,后来请教高手后,在查询之前先进行了“set textsize 2147483647”的动作,目前转图中有5%左右的图像出现上面图像的现象,其它大部分图形正常。
另外,有一个有价值的线索:我在每次提取、保存时,出现异常的图 不固定,有时是这张,使用覆盖的模式保存,下一次或许这张好了,另外一张原来好的可能出现了问题。请高手们帮忙诊断一下原因?
为什么错位?
为什么变色?是哪里的长度设定?还是