Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
xmokay opened this issue Sep 20, 2022 · 3 comments
Closed

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

xmokay opened this issue Sep 20, 2022 · 3 comments

Comments

@xmokay
Copy link

xmokay commented Sep 20, 2022

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

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

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

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

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

@xmokay
Copy link
Author

xmokay commented Sep 20, 2022

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

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

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

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


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

@hiroi-sora
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants