两个问题,一个是以byte[]为数据源显示图片,第二就是项目release下读不到资源文件

夏天的枫 2016-03-11 10:53:58
第一个问题的描述在下方链接,硬是读不出图片。
http://bbs.csdn.net/topics/391913022
第二个问题就是在wpf中我把资源文件(图片,xml等)放在一个专门存放的工程文件的各个文件夹下,然后wpf引用的时候用了较多相对路径和pack这样的路径,然后在release下就发现里面的文件读不到了,特向各位请教一下如何快速解决。。。
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-03-11
  • 打赏
  • 举报
回复
引用 3 楼 hjq624779687 的回复:
[quote=引用 2 楼 shingoscar 的回复:] 第一个问题,先把byte[]拿全了,看你第一张截图,才13字节?而且图片都有固定头的,你现在取出来的数据就不是图片。 第二个问题,release和debug输出的是两个目录,如果你写的相对路径是基于exe所在的位置的,那要再复制一份
第一个问题我是把图片存入了sqlite数据库,然后在程序中取出来,存成了string,然后通过System.Text.Encoding.ASCII.GetBytes(),又换成了byte[],是不是这儿出现了问题?第二个问题就是可能我用相对路径和pack两个引用了同一资源,然后相对路径的方式就可能找不到这个资源了,这个能不能给个解决方案呢,谢谢[/quote] 你这属于乱存 要么数据库里应该存成blob 或者byte[]用base64编码成string再存 第二,你还是发个代码和文件夹的结构出来看下吧
夏天的枫 2016-03-11
  • 打赏
  • 举报
回复
引用 1 楼 xian_wwq 的回复:
第二个问题,既然用了相对路径,debug可以访问, 首先查下release的配置 也可以在加载资源的地方打出全路径,对比看下是哪里的问题
第一个问题我是把图片存入了sqlite数据库,然后在程序中取出来,存成了string,然后通过System.Text.Encoding.ASCII.GetBytes(),又换成了byte[],是不是这儿出现了问题?第二个问题就是可能我用相对路径和pack两个引用了同一资源,然后相对路径的方式就可能找不到这个资源了,这个能不能给个解决方案呢,谢谢
夏天的枫 2016-03-11
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
第一个问题,先把byte[]拿全了,看你第一张截图,才13字节?而且图片都有固定头的,你现在取出来的数据就不是图片。 第二个问题,release和debug输出的是两个目录,如果你写的相对路径是基于exe所在的位置的,那要再复制一份
第一个问题我是把图片存入了sqlite数据库,然后在程序中取出来,存成了string,然后通过System.Text.Encoding.ASCII.GetBytes(),又换成了byte[],是不是这儿出现了问题?第二个问题就是可能我用相对路径和pack两个引用了同一资源,然后相对路径的方式就可能找不到这个资源了,这个能不能给个解决方案呢,谢谢
Poopaye 2016-03-11
  • 打赏
  • 举报
回复
第一个问题,先把byte[]拿全了,看你第一张截图,才13字节?而且图片都有固定头的,你现在取出来的数据就不是图片。 第二个问题,release和debug输出的是两个目录,如果你写的相对路径是基于exe所在的位置的,那要再复制一份
xian_wwq 2016-03-11
  • 打赏
  • 举报
回复
第二个问题,既然用了相对路径,debug可以访问, 首先查下release的配置 也可以在加载资源的地方打出全路径,对比看下是哪里的问题
夏天的枫 2016-03-11
  • 打赏
  • 举报
回复
引用 10 楼 shingoscar 的回复:
[quote=引用 8 楼 hjq624779687 的回复:] 哦,是不是应该拿出来的时候就强转为byte[]?
拿来就应当是byte[],为何还要转换?[/quote] 好的,刚才搞定了,确实如你所说。第二个问题也考虑了下,可能那些资源文件我还得好好谋划谋划,谢谢了,结帖给分。
Poopaye 2016-03-11
  • 打赏
  • 举报
回复
引用 8 楼 hjq624779687 的回复:
哦,是不是应该拿出来的时候就强转为byte[]?
拿来就应当是byte[],为何还要转换?
xuzuning 2016-03-11
  • 打赏
  • 举报
回复
第一个问题
MemoryStream mysm = new MemoryStream((byte [])图片数据);
Image ims = Image.FromStream(mysm);
夏天的枫 2016-03-11
  • 打赏
  • 举报
回复
引用 7 楼 shingoscar 的回复:
[quote=引用 6 楼 hjq624779687 的回复:] [quote=引用 5 楼 shingoscar 的回复:] [quote=引用 3 楼 hjq624779687 的回复:] [quote=引用 2 楼 shingoscar 的回复:] 第一个问题,先把byte[]拿全了,看你第一张截图,才13字节?而且图片都有固定头的,你现在取出来的数据就不是图片。 第二个问题,release和debug输出的是两个目录,如果你写的相对路径是基于exe所在的位置的,那要再复制一份
第一个问题我是把图片存入了sqlite数据库,然后在程序中取出来,存成了string,然后通过System.Text.Encoding.ASCII.GetBytes(),又换成了byte[],是不是这儿出现了问题?第二个问题就是可能我用相对路径和pack两个引用了同一资源,然后相对路径的方式就可能找不到这个资源了,这个能不能给个解决方案呢,谢谢[/quote] 你这属于乱存 要么数据库里应该存成blob 或者byte[]用base64编码成string再存 第二,你还是发个代码和文件夹的结构出来看下吧[/quote] 图片存为的blob。。。但是是不是我转换的方式有错[/quote] 当然是错的,blob对应的是byte[],你怎么能变成string?[/quote] 哦,是不是应该拿出来的时候就强转为byte[]?
Poopaye 2016-03-11
  • 打赏
  • 举报
回复
引用 6 楼 hjq624779687 的回复:
[quote=引用 5 楼 shingoscar 的回复:] [quote=引用 3 楼 hjq624779687 的回复:] [quote=引用 2 楼 shingoscar 的回复:] 第一个问题,先把byte[]拿全了,看你第一张截图,才13字节?而且图片都有固定头的,你现在取出来的数据就不是图片。 第二个问题,release和debug输出的是两个目录,如果你写的相对路径是基于exe所在的位置的,那要再复制一份
第一个问题我是把图片存入了sqlite数据库,然后在程序中取出来,存成了string,然后通过System.Text.Encoding.ASCII.GetBytes(),又换成了byte[],是不是这儿出现了问题?第二个问题就是可能我用相对路径和pack两个引用了同一资源,然后相对路径的方式就可能找不到这个资源了,这个能不能给个解决方案呢,谢谢[/quote] 你这属于乱存 要么数据库里应该存成blob 或者byte[]用base64编码成string再存 第二,你还是发个代码和文件夹的结构出来看下吧[/quote] 图片存为的blob。。。但是是不是我转换的方式有错[/quote] 当然是错的,blob对应的是byte[],你怎么能变成string?
夏天的枫 2016-03-11
  • 打赏
  • 举报
回复
引用 5 楼 shingoscar 的回复:
[quote=引用 3 楼 hjq624779687 的回复:] [quote=引用 2 楼 shingoscar 的回复:] 第一个问题,先把byte[]拿全了,看你第一张截图,才13字节?而且图片都有固定头的,你现在取出来的数据就不是图片。 第二个问题,release和debug输出的是两个目录,如果你写的相对路径是基于exe所在的位置的,那要再复制一份
第一个问题我是把图片存入了sqlite数据库,然后在程序中取出来,存成了string,然后通过System.Text.Encoding.ASCII.GetBytes(),又换成了byte[],是不是这儿出现了问题?第二个问题就是可能我用相对路径和pack两个引用了同一资源,然后相对路径的方式就可能找不到这个资源了,这个能不能给个解决方案呢,谢谢[/quote] 你这属于乱存 要么数据库里应该存成blob 或者byte[]用base64编码成string再存 第二,你还是发个代码和文件夹的结构出来看下吧[/quote] 图片存为的blob。。。但是是不是我转换的方式有错

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧