PictureBox 显示gif显示几秒后出现errorimage的问题

harukalove 2017-04-26 01:39:31



//方法一
pictureBox1.Image = Image.FromFile(@"E:\测试.gif");

能打开GIF 但是播放几秒后就会跳出errorimgae的红X 但是也没有跳出错误提示。

下面是我网上搜到的把图片转化成内存流的方法

//方法二
// 将文件转为内存流
private MemoryStream ReadFile(string path)
{
if (!File.Exists(path))
return null;
using (FileStream file = new FileStream(path, FileMode.Open))
{
byte[] b = new byte[file.Length];
try
{
file.Read(b, 0, b.Length);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
MemoryStream stream = new MemoryStream(b);
return stream;
}
}
// 将内存流转为图片
private Image GetFile(string path)
{
MemoryStream stream = ReadFile(path);
return stream == null ? null : Image.FromStream(stream);
}


private void Form1_Load(object sender, EventArgs e)
{
string test= @"E:\测试.gif";
ReadFile(test);
pictureBox1.Image = GetFile(test);
}

用方法二也能读出GIF 但是和方法一一样播放几秒后就会跳出默认的errorimgae..
这是为什么呢 有没有大神给解答一下 顺便给出解决的方法?
本地读取 不用数据库 我是gif jpg之类图片切换显示的

追加: 不停循环播放和只播放一次怎么处理
...全文
568 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdfgrtyu 2017-04-26
  • 打赏
  • 举报
回复
引用 11 楼 harukalove 的回复:
[quote=引用 8 楼 xuzuning 的回复:] 这个不好说 如果我这里也出问题的话,倒是可以想办法找找原因 但问题是我这里并无问题,无从下手啊
这2个GIF能正常循环播放 是GIF大小的问题还是GIF帧数长度的问题?[/quote] 我帮你远程看一下啊,我之前也遇到过这个问题
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
这个不好说
如果我这里也出问题的话,倒是可以想办法找找原因
但问题是我这里并无问题,无从下手啊





这2个GIF能正常循环播放 是GIF大小的问题还是GIF帧数长度的问题?
sdfgrtyu 2017-04-26
  • 打赏
  • 举报
回复
很明显的问题,
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 6 楼 hanjun0612 的回复:
把问题截图下来。
已经截图了 我在picturebox控件里切换图片 jpg图能通过button来回切换一点问题没有 一旦读到gif就会出现红x再切回jpg就还是红x了 就是上面截图的那样 但是picturebox的双击事件还是能正常的响应

 private void 图片显示_DoubleClick_1(object sender, EventArgs e)
        {
 Process.Start(选中的图片的路径); 
        }
 
xuzuning 2017-04-26
  • 打赏
  • 举报
回复
这个不好说 如果我这里也出问题的话,倒是可以想办法找找原因 但问题是我这里并无问题,无从下手啊
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
观察了十分钟,没有发现你说的现象




我也是直接新建了窗口 拉个控件进去 其他属性都没改 但是直接跳红X了啊...
正怒月神 2017-04-26
  • 打赏
  • 举报
回复
把问题截图下来。
xuzuning 2017-04-26
  • 打赏
  • 举报
回复


观察了十分钟,没有发现你说的现象
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
贴出你的 gif,看看是否有问题



当然不止这一张有问题
xuzuning 2017-04-26
  • 打赏
  • 举报
回复
贴出你的 gif,看看是否有问题
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 1 楼 xuggzu 的回复:
不用自己写程序播放,也就是用其它软件放有没有错误?
在QQ和IE浏览器都能正常播放 文件也不是很大 几百*几百的分辨率 大小也就3M 当然不止这一个GIF有问题 好几个GIF有问题
不想再做梦 2017-04-26
  • 打赏
  • 举报
回复
66666666666
xuggzu 2017-04-26
  • 打赏
  • 举报
回复
不用自己写程序播放,也就是用其它软件放有没有错误?
xuzuning 2017-04-26
  • 打赏
  • 举报
回复
那我 2G 的内存,不也显示正常吗?
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 22 楼 xuzuning 的回复:
小的行,大的不行 应该是内存不足
那如果要读取较大的图片应该怎么写呢 (多大算大?) 我内存8G为什么会不足呢
xuzuning 2017-04-26
  • 打赏
  • 举报
回复
小的行,大的不行 应该是内存不足
正怒月神 2017-04-26
  • 打赏
  • 举报
回复
引用 20 楼 harukalove 的回复:
我发给几个人都能正常显示 然后我去隔壁的电脑上试了一下也能正常使用...那代码应该没问题啊 为什么我本机会报错呢...
你机器问题。。。。。
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 17 楼 hanjun0612 的回复:
很奇怪,我没有遇到这个问题
我发给几个人都能正常显示 然后我去隔壁的电脑上试了一下也能正常使用...那代码应该没问题啊 为什么我本机会报错呢...
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 15 楼 ducker3590 的回复:
[quote=引用 13 楼 harukalove 的回复:]
[quote=引用 8 楼 xuzuning 的回复:]
这个不好说
如果我这里也出问题的话,倒是可以想办法找找原因
但问题是我这里并无问题,无从下手啊

我在vs里调试没有报错
但是我用.exe打开之后播放GIF就会出现如下的报错
我给别人用同样的.exe缺能正常播放完成 这是为什么呢...

[/quote]
可能是图片的路径问题 你放到非中文目录下试试 或者把图片加到你的Resource里面再使用[/quote]


换成非中文也没用 而且再导入的时候也会出现红X 然后再点别的图片也就都是红X了....
harukalove 2017-04-26
  • 打赏
  • 举报
回复
引用 16 楼 xuzuning 的回复:
可能是你内存碎片太多了
请问一下这个应该怎么处理呢 还有就是用 pictureBox1.Image = Image.FromFile 虽然简单 但是是不是对图片文件大小有所限制?
加载更多回复(5)

110,539

社区成员

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

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

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