众所周知,所有文件都只是数据的容器。PNG
文件也不例外。
PNG 文件基本上只是指彩色像素的矩形网格,因此它不会那么复杂 - 当然不像视频甚至 GIF 那么复杂。
我的问题是,如何仅使用记事本从无到有地创建 PNG?然后可以在浏览器(例如 Chrome)中打开该文件,浏览器会将其识别为图像。
由四个彩色像素组成的小方块就是一个很好的例子。
使用 Paint 尝试查看正在发生的事情会产生有趣的结果。
如果使用 Paint 创建如下所示的 PNG 文件,(它非常小,2x2 像素,因此您可能需要放大)
生成的文本文件如下所示:
IHDR ýÔšs sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d IDATWcè`ýÿ‰Ai£½Ç !ß=î_— IEND®B`‚
但幕后到底发生了什么?
需要澄清的是,问题不是如何创建任何 PNG 文件,而是如何使用文本创建符合特定标准的 PNG 文件,例如彩虹 7 种颜色的一行?
答案1
如何仅使用记事本从无到有创建 PNG?
非常困难。使用十六进制编辑器会更容易(但仍然很困难)。
本质上,你必须创建一个与以下格式匹配的文件:PNG 规范。
文件的头部必须以 PNG 签名开头,该签名由以下十进制值组成:
137 80 78 71 13 10 26 10
无法使用记事本输入十进制 10(换行符)(因此建议使用十六进制编辑器)来创建文件。
您还需要能够计算 CRC 值并遵循许多复杂的块排序规则。
如果您阅读上面链接的规范,您将看到手动创建 PNG 有多么复杂。
使用支持 PNG 的图形编辑器会更容易。
答案2
答案3
答案4
实际上,文件不仅仅是数据的容器。它们是二进制数据流。每种文件类型对于二进制流的哪些部分是哪些数据都有不同的布局。
在记事本中打开图像会导致二进制流被解释为人类语言中的字符。但是,我们不会使用与我们定义的特定语言中的字符相对应的二进制文件来制作文件。因此,记事本可能会或可能不会为您提供任何有用的二进制流解释,以便能够添加和删除 PNG 解释器可识别的数据。
如果您真的好奇如何从无到有创建 PNG 文件,那么您必须使用数字(最好是二进制或十六进制)来完成此操作,使用十六进制编辑器程序从磁盘读取二进制流并以 16 进制显示它。