首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用文本生成图像

使用文本生成图像
EN

Stack Overflow用户
提问于 2017-05-20 16:37:48
回答 1查看 587关注 0票数 0

我访问了这个网站,https://xcode.darkbyte.ru/

基本上,网站以文本作为输入,并生成图像。它还以图像作为输入,并将其解码回文本。我真的很想知道这叫什么,是怎么做的,我想知道算法最好用Java,请帮忙,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-20 17:04:01

有许多方法可以将文本(一系列字节)编码为图像,但您引用的站点以非常简单和直接的方式进行编码。你可以很容易地进行逆向工程:

  • 多达3个字符编码为1个像素;4个字符编码为2个像素--我们从中了解到,每个像素只使用R(ed)、G(reen)和B(lue)通道(而不是alpha/透明通道)。
  • 我们知道PNG支持每个信道8位,而且每个ASCII字符都是8位宽。让我们测试第一个字符(前8位)是否存储在红色通道中。
代码语言:javascript
复制
- Let's try `z..`. Since `z` is relatively high in ASCII table (`122`) and `.` is relatively low (`46`) -- we expect to get a redish 1x1 PNG. And we do.
- Let's try `.z.`. Is should be greenesh.. And it is.
- Similarly for `..z` we get a bluish pixel.

  • 现在让我们看看非ASCII输入会发生什么。尝试输入: (unicode char \u2460)。站点将字符串html编码①,然后像以前一样将该ASCII文本编码到图像中。
  • 压缩。当输入大量文本时,我们注意到输出比预期的要短。这意味着后端在原始输入之前(或之后)运行某种压缩算法。把它编码成图像。通过注意图像的分辨率和最大信息内容(HxWx3x8位)小于输入,我们可以得出压缩是在对图像进行编码之前完成的,而不是在之后(因此不依赖于PNG压缩)。通过使用Huffman编码利佩尔-齐普LZW放气、甚至布罗蒂等常见的罪魁祸首对原始输入进行编码,并将输出与图像像素中的字节进行比较,可以进一步检测出使用哪种压缩算法。(请注意,我们不能通过检查一个神奇的前缀来直接检测它,除了原始的压缩数据之外,作者很有可能被删除任何东西。)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44088393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档