zoukankan      html  css  js  c++  java
  • 循环存取同一张图片导致的错误

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

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

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

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

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

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

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

  • 相关阅读:
    jQuery 请指出'$'和'$.fn'的区别?或者说出'$.fn'的用途。
    ie8及其以下浏览器的document.getElementsByClassName兼容性问题
    document.all的详细解释(document.all基本上所有浏览器可用!)
    CSS浮动属性Float介绍
    JCarouselLite--帮助文档
    css定位之z-index问题分析
    Android手机同步电脑端google chrome书签
    AWK原理及命令和文件输入
    Sed命令
    Shell正则表达式
  • 原文地址:https://www.cnblogs.com/theblueberry/p/4332667.html
Copyright © 2011-2022 走看看