gpt4 book ai didi

encryption - 将字符串编码为图片会导致压缩

转载 作者:行者123 更新时间:2023-12-04 11:48:21 35 4
gpt4 key购买 nike

我正在开发一个程序,它接受一个字符串,将字符串的每个字符转换为一种颜色,然后在图像上从左到右、从上到下绘制颜色。然后可以使用相同的程序解码图像以获取原始消息。例如,这里是 clojure.core , 编码为图像:

Clojure.core encoded as an image

我写这个只是作为一个玩具,但我注意到它产生的图像的一个有趣的特性:它们比原始消息作为文本要小。对于 clojure.core ,它是 259kb 作为文本,但只有 88.9kb 作为图像(上图)(两个值都是“磁盘大小”)。为了确保数据不会丢失,我对图像进行了解码,并取回了原始消息。

这怎么可能?我认为图像(png 格式)会有标题和其他额外信息,这些信息会增加尺寸。

整个clojure.core包含 265486 个字符(根据 Notepad++),这意味着每个字符基本上都占用一个字节。

来自与 BufferedImage 的合作类(Java),看起来好像颜色存储为 4 字节整数,所以每个像素不应该需要~4 倍的内存吗?

这是它的编码方式:

  • 字符串的第一个字符被弹出
  • 通过获取它的 ASCII 值,将其乘以一个大数字(因此它可以更好地覆盖可能的颜色范围)将其转换为颜色,然后将该数字转换为 3 位,基数为 256 的数字( [123 100 200] )。
  • 每个数字都被视为红色、绿色和蓝色 channel ,它们被赋予 BufferedImagesetRGB方法。
  • position指示器前进,弹出下一个字符,并重复该过程,直到对整个消息进行编码。

  • 该算法现在有点复杂。 @Thumbnail 提出了一种更好的 Code Review 方法,但我还没有实现。由于结果是相同的,这不应该对问题产生影响。

    最佳答案

    Portable Network Graphics (PNG) 是一种光栅图形文件格式,支持无损数据压缩(来自 https://en.wikipedia.org/wiki/Portable_Network_Graphics)。图像数据在存储为 .png 文件时被压缩。

    关于encryption - 将字符串编码为图片会导致压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41796754/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com