如何使用 Swift 跨平台编写 png 图片

How to write png images using Swift cross platform

我在写一点cross-platform raytracer in Swift。目前我被困在写出生成的图像的地方。我搜索了几天图书馆,但我只找到了以下内容:

图像输出是 swift 中编写的初始光线跟踪算法的最后一块砖。如果有人知道如何实现这一点,我将非常感激。也许有人可以提供有用的建议来解决这个问题。

另一种选择是找到一种非常简单的图像格式,或者存在一个库,或者我可以为自己编写一个 Swift 算法。

我会使用 netpbm,这是一种简单的格式,然后使用第三方转换器(如 ImageMagick 或 GraphicsMagick)将其转换为最终格式。

可以使用netpbm库,也可以自己写像素。

格式描述here

典型的 PPM 文件如下所示,其中 "P3" 幻数表示它采用 ASCII 格式:

$ cat p3.ppm
P3 4 4 255
  0  0  0    0  0  0    0  0  0   255  0 255
  0  0  0    0 255 127  0  0  0    0  0  0
  0  0  0    0  0  0    0 255 127  0  0  0
255  0 255   0  0  0    0  0  0    0  0  0

如果愿意,可以写一个"P6"格式的PPM文件,其中 像素是原始字节;

$ od -c p6.ppm
0000000   P   6  \n   4       4  \n   2   5   5  \n  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]
0000020  [=11=]  [=11=]  [=11=]  [=11=] 377  [=11=] 377  [=11=]  [=11=]  [=11=]  [=11=] 377 177  [=11=]  [=11=]  [=11=]
0000040  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=] 377 177  [=11=]  [=11=]  [=11=] 377
0000060  [=11=] 377  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]  [=11=]