代码之家  ›  专栏  ›  技术社区  ›  onaclov2000

如何将二进制文件编码为JPG格式?

  •  2
  • onaclov2000  · 技术社区  · 14 年前

    我想能够采取的1和0的流,并将其转换成一种格式,jpg可以读取,即假设我写了一个程序,编译并得到一个exe,然后采取和运行的1和0的exe通过上述程序,它会产生一个.jpg。关于我需要做什么有什么建议吗?我希望这没有我想象的那么难。

    更新:假设你取了任何旧图像,并将其还原为原始格式,只有1和0,现在假设你取了这些1和0,并以某种方式对它们进行解码,你会得到什么样的程序(显然不是正常运行的程序),但现在我在想,假设我们换个角度,用一个.exe,把所有的1和0都排成一个“图像”看起来的格式,有没有可能看到一张图片,这就是我想发现的(我希望这能解释我感兴趣的内容),所以格式并不重要,我关心的可能是bmp,我只想看看程序中是否有一个图像在程序中是可分辨的。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    4 年前

    你在说什么 steganography StegFS 和或 MP3Stego .

    更新

    在重读你的问题时,你是否只想要一个双色图像,一种颜色代表1,另一种颜色代表0?所以二进制序列 0110 1101 1010 1101 会产生如下图像:

    wbbw
    bbwb
    bwbw
    bbwb
    
        2
  •  2
  •   Joey Adams    14 年前

    好吧,“正确”的方法是使用JPEG编码库和您最喜欢的编程语言。

    如果你想马上开始生成JPEG,你有一个选择,就是让你的程序编码图像 PPM cjpeg utility 将其转换为JPEG。例子:

    foo.exe > out.ppm
    

    现在,out.ppm(从维基百科窃取)包含:

    P3
    # The P3 means colors are in ASCII, then 3 columns and 2 rows, then 255 for max color, then RGB triplets
    3 2
    255
    255   0   0     0 255   0     0   0 255
    255 255   0   255 255 255     0   0   0
    

    有了它,您可以运行:

    cjpeg -outfile out.jpg out.ppm
    

        3
  •  0
  •   onaclov2000    12 年前

    这听起来有点傻,但是通过将扩展名改为.raw,文件会在photoshop(在我的例子中是Gimp)中自动打开,您可以看到“位模式”是什么样子。这就是我的目标。