【问题标题】:What does windows notepad do when opening a png filewindows记事本打开png文件有什么作用
【发布时间】:2023-02-02 22:15:26
【问题描述】:

我想知道为什么当你在 Windows 记事本中打开图片时,你会得到一大堆看起来很奇怪的字符。

是因为它需要每个像素并将其转换为对应的 ASCII 码吗?记事本专门对文件做什么。

任何和所有答案将不胜感激。

顺便说一句,我的特定文件开头有字母 IHDR

【问题讨论】:

    标签: windows image ascii notepad


    【解决方案1】:

    每当记事本(或任何其他文本编辑器,无论其价值如何)打开文件时,它都会读取文件的字节并以某种编码解释它们。哪种编码?这取决于平台、设置和可能的开放选项。

    但是出于这个问题的目的,它选择哪种编码实际上并不是很重要,因为没有编码是“正确的”:图像文件(顺便说一下,IHDR 暗示它是 PNG 文件)是一个二进制数据流,其中大多数字节不代表任何有意义的文本。

    一些元数据可能是文本的(例如,如果某处有注释)并且文件格式的某些部分可能偶然或设计为“看起来像”文本。

    IHDR 是一个例子:PNG is made up of chunks 并且块类型是 4 字节序列,当使用 ASCII(或基于 ASCII 的编码)时,这些序列“恰好”全部解码为某种程度上合理的文本。

    但是对于文件中的大多数其他内容,字节的二进制表示具有与可以应用的任何文本编码无关的特定解释。

    例如,IHDR 块的前 4 个字节仅定义图像的宽度。

    因此,一个 300 像素宽的图像将具有这些字节为 00 00 01 2C(因为 300 十进制是 0x12C 十六进制)。

    如果使用 ASCII 解码可以被解释为

    现在 NUL 和 SOH 是不可打印的控制字符,所以记事本可能只会将它们表示为空格或某种控制字符,但 , 只是一个普通的旧 ,.

    这种情况不断发生:记事本试图将任意字节解释为文本,即使它们不是。

    【讨论】:

      【解决方案2】:

      我对堆栈溢出的第一个回答,如有任何错误,请原谅。 我也做了你问的同样的事情,我发现当我在文本编辑器中打开任何 jpg 文件时,它会将它们显示为十六进制数字,即使改变一个位,文件也会变得完全无用我尝试了所有不同的 jpg opener给出了同样的错误。 但是当我使用 nano 编辑器查看 jpeg 文件中的内容时,它显示了带有奇怪符号的完全不同的文本......就像一个 JSON 文件(我不知道那是什么)......但是对该文件进行更改确实改变了图像的属性,如混色和清晰度等......我只是通过更改几个字符破坏了图片,现在它完全无法识别...... 所以我从所有这些中学到的是,它取决于您正在编辑的文件的格式,如果您对其进行任何更改,它会更改图像。

      抱歉有任何语法错误。

      【讨论】:

        猜你喜欢
        • 2019-06-01
        • 2020-11-21
        • 2016-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-10
        • 2018-02-06
        相关资源
        最近更新 更多