微信是如何实现图片跳转到原始文章的?

我打开任意一个微信该公众号的文章,用屏幕截图功能截取部分内容,将图片保存到本地图库后,发送到任意聊天或群聊
image.png

网友和自己可以通过左下角的“阅读全文”按钮,精确打开当时截图的微信公众号文章
image.png

如果单纯是OCR, 这个难度比较大,微信是怎么实现的

阅读 1.6k
4 个回答

猜测系统截图时,微信监测到截图事件获取到图片名称,然后缓存当前浏览的文章和图片名称;然后发送到聊天时判断图片名称来获取文章ID。

测试过程
截图两个公众号的文章,然后互换图片名称,发送图片到聊天,实际的阅读原文图片是另一个图片的。

个人推测,是截图的时候会在图片文件的最后追加一部分加密后的内容用于存储原文信息,微信的图片解析器在解析的时候会去读取这一部分。
image.png
我试着删除这一段,发到微信,图片内容正常显示且没变换,但是没有显示原文的小按钮了。

1.截图事件监听 + 本地缓存
当你在微信中阅读公众号文章并截图时,微信会监听截图事件。
此时,微信会将当前文章的唯一标识(如 URL、文章 ID)与截图图片的图像指纹或哈希值进行绑定,并缓存到本地。

2.图像指纹识别
当你将截图发送到聊天窗口时,微信会对图片进行图像指纹识别(不是 OCR,也不是文件名匹配)。
如果识别出该图像与某篇文章绑定过,就会在图片左下角显示“阅读全文”按钮。

逻辑可以归纳为两步:
1.用户截图时,微信记录文章 ID + 截图图像指纹 → 本地缓存;
2.用户发送图片时,微信识别图像指纹 → 匹配成功 → 提示“阅读全文”。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进