我非常有兴趣了解图形文件格式(PNG,JPG,GIF)的工作原理。是否有任何代码示例演示如何制作这些文件以及如何解释它们(在浏览器中查看)?
答案 0 :(得分:0)
通过阅读文件格式规范并使用您最熟悉的语言实现解析器,可以获得最详细的信息。
一种好方法是读取格式并将其转换为四字节tupples(RGBA,一种颜色的红色,绿色,蓝色和alpha部分)的数组。这将允许您使用此格式作为介于两者之间格式之间的格式,便于转换。同时,大多数API都支持显示这种原始格式。
开始使用的好格式是BMP。如果这是你第一次遇到编写解析器,这是一种安全的“简单”格式。一个好的第二种格式是PNG。从未压缩的变体开始,然后添加压缩。
下一步是TGA学习阅读块或JPG以了解有关压缩的更多信息。
额外提示:编写器的某些实现包含(ed)错误,导致图像违反格式。其他人添加了从未进入官方规格的额外功能。在编写解析器时,这可能是一个真正的痛苦。当您遇到问题时,请先猜测您正在尝试阅读的图像。一个好的二进制/ hex文件阅读器/编辑器可以是一个非常有用的工具。我使用了AX,如果我没记错的话,它允许你用格式覆盖十六进制代码,这样你就可以快速识别标题和块。
答案 1 :(得分:0)
无论您使用哪种图形文件格式,都需要了解所有图形文件的基本特性。
一旦了解了这个基本结构,一旦您了解了正在使用的文件结构的规范,就可以更轻松地解析图像文件。当您知道要读入包含所有头和块的文件指针的字节数时,您可以将文件指针前进到将读入或写出所有像素(颜色)数据的数据结构。在许多情况下,像素数据通常是每像素24位,使得每个通道RGBA - 红色,绿色,蓝色和Alpha每个是8位,或者是与无符号字符相同的一个字节。这以结构或二维阵列表示。无论哪种方式,一旦您了解文件的结构并知道如何读取实际图像或颜色数据,您就可以轻松地将其存储到单个数组中。那么你从那里做什么取决于你的应用程序的需求。