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

ni65a41a  于 2023-03-28  发布在  Swift
关注(0)|答案(1)|浏览(120)

我写了一个小cross-platform raytracer in Swift.目前我被困在点写出生成的图像.我搜索了一些天,现在一个库,但我发现只有以下:

  • 使用UIImagePNGRepresentation写入PNG:不,只有iOS
  • lodepng-一个轻量级的c++库,只包含两个文件(.c和.h):看起来很有希望,但它不会链接到我的swift程序-非常令人失望
  • libpng:完全成熟的png库,这对我的目的来说太多了。

图像输出是用swift编写的初始光线跟踪算法的最后一块砖。如果有人知道如何实现这一点,我将非常感谢。也许有人可以给予有用的建议如何解决这个问题。
另一个选择是找到一个非常简单的图像格式,它要么有一个lib,要么我可以为自己编写一个Swift算法。

khbbv19g

khbbv19g1#

我会使用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  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0 377  \0 377  \0  \0  \0  \0 377 177  \0  \0  \0
0000040  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0 377 177  \0  \0  \0 377
0000060  \0 377  \0  \0  \0  \0  \0  \0  \0  \0  \0

相关问题