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

标签 swift image png cross-platform static-libraries

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

  • 使用 UIImagePNGRepresentation 编写 PNG : 不,那只是 iOS
  • lodepng - 一个仅由 2 个文件(.c 和 .h)组成的轻量级 c 库:看起来很有前途,但它不会与我的 swift 程序链接 - 非常令人失望
  • libpng : 完全成熟的 png 库对我来说太过分了。

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

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

最佳答案

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

您可以使用 netpbm 库,或者自己编写像素。

格式描述here

典型的 PPM 文件如下所示,其中“P3”魔数(Magic Number)表示它采用 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

view of sample PPM image

如果你愿意,你可以编写一个“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

关于swift - 如何使用Swift跨平台编写png图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38984260/

相关文章:

ios - 保存解析通知 - iOS

ios - cocoapods 集成后无法在设备中安装 IPA

java - 在Java中解析图像,针对不同的像素颜色使用不同的操作

php - 通过在 php 中调整远程 PNG 图像的大小,哪种方法可以更快地提高页面速度?

ios - 当裁剪点位于任何有 4 个点的形状上时,将图像裁剪为矩形形状 - IOS/Swift

swift - 如何在 Swift 中将十进制数转换为二进制数?

iOS 7 UINavigationBar Retina 图像大小

arrays - 如何在Corona SDK/LUA中创建随机显示图像和播放音频文件的功能?

c# - 在 C# 中保存索引的 16 位灰度 png

css - 将 svg 转换为 png 时如何包含 CSS 样式