码迷,mamicode.com
首页 > 其他好文 > 详细

循环存取同一张图片导致的错误

时间:2015-03-12 16:37:38      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

  这两天被一个问题困住,目标是在一台电脑上连续不断(200毫秒为间隔)截屏并存入指定目录下的指定同一张图片pic.png中,另外一台电脑连续不断通过IP地址加图片路径读取这张图片pic.png。

  问题出现了,当我总是在存同一张图片的时候,服务器这边读取到的图片会有残缺,有时候甚至只能解析到上面一小部分。

  很快我意识到这是因为存储图片的间隔太小,于是改为间隔是 500毫秒 ,也有同样的问题。但考虑到要在读取图片的那一端看到流畅的屏幕变化,所以时间间隔又不适宜设置得太大。

 

  我在园子里发了相关博问,大牛告诉我可以试试加锁,然而没什么用。最终和同事讨论了一下,找到一个好的解决方案。

  首先在截屏的这一台电脑上维护5张张图片,截屏一次存一张,文件名称同时存入一个 txt 文件中,当存储的图片超过5张的时候,删除 除了最近5张图片以外的所有图片,同时删除 txt 文件中被删图片的名称记录。  在读图的那台电脑上先读取 txt 文件,解析到最新一张图片的名称,根据这个名称读取相应的图片并且显示。

  这个问题能够解决的根本原因在于,多线程情况下,Bitmap存储同一张图片的时候,会出现 前一张还没有存储完成 后一次存储已经开始  这样的情况,即使添加共享锁也不能解决问题。而如果存成不同的文件,同样是多线程存储,那么每个文件都能完整地存储下来。

  特此记录该问题的比较麻烦的解决方法,如果发现更好的解决方案,会更改本文章的内容。

循环存取同一张图片导致的错误

标签:

原文地址:http://www.cnblogs.com/theblueberry/p/4332667.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!