Umi-OCR icon indicating copy to clipboard operation
Umi-OCR copied to clipboard

微信中直接复制的图片无法读取

Open xmokay opened this issue 1 year ago • 2 comments

  1. 从微信聊天中直接复制有文字的图片
  2. 用剪切板查看工具确认剪切板内有图片信息
  3. 点击识别内容->剪切板读取 期望:OCR结果 实际:没有任何反应

xmokay avatar Sep 20 '22 08:09 xmokay

哈哈,感谢你发现了这个神奇的Bug~

我调查了一下,发现事情是这样的:剪贴板里的数据有各种格式定义嘛,比如位图CF_BITMAP、文件句柄CF_HDROP、字符串CF_UNICODETEXT等。一条数据可以同时具有多种格式。我之前的代码只检测剪贴板是否为位图CF_BITMAP,是则调用OCR。

而微信复制的时候,它先把图片写入临时文件夹C:\Users\xxxx\AppData\Local\Temp\WeChat Files,再把图片字节和文件句柄同时写入剪贴板,即同时具有CF_BITMAPCF_HDROP双重属性,因此干扰了我程序的判断。

实际上,我昨天的更新已经间接解决了这个问题,能以读入临时文件的文件句柄的形式识别微信复制到剪贴板的图片了。不过还不够完美,我之后试试改成优先以位图的形式读入~

hiroi-sora avatar Sep 20 '22 09:09 hiroi-sora

哈哈,感谢你发现了这个神奇的Bug~

我调查了一下,发现事情是这样的:剪贴板里的数据有各种格式定义嘛,比如位图CF_BITMAP、文件句柄CF_HDROP、字符串CF_UNICODETEXT等。一条数据可以同时具有多种格式。我之前的代码只检测剪贴板是否为位图CF_BITMAP,是则调用OCR。

而微信复制的时候,它先把图片写入临时文件夹C:\Users\xxxx\AppData\Local\Temp\WeChat Files,再把图片字节和文件句柄同时写入剪贴板,即同时具有CF_BITMAPCF_HDROP双重属性,因此干扰了我程序的判断。

实际上,我昨天的更新已经间接解决了这个问题,能以读入临时文件的文件句柄的形式识别微信复制到剪贴板的图片了。不过还不够完美,我之后试试改成优先以位图的形式读入~


这么快就回复,效率太高了。期待新版本。

xmokay avatar Sep 20 '22 09:09 xmokay

v1.3.0 已更新并修复该Bug。

hiroi-sora avatar Sep 28 '22 19:09 hiroi-sora