将 32 位 RGBA 缓冲区保存到 .png 文件中 (Cocoa OSX)

2024-01-01

我需要将像素编辑器应用程序的内容保存到 .png 文件中,但我无法找到完成此操作的最佳方法。像素数据存储在 32 位 RGBA 缓冲区中。谁能建议我可以用来完成此任务的任何好工具?

编辑: 不幸的是,cocotron 不支持 CGImage 和representationUsingType:,我也需要能够将我的应用程序定位到 PC 版本,有人可以建议第三种方法来完成此任务吗?


NSBitmapImageRep应该给你你需要的东西。将数据加载到NSBitmapImageRep然后使用representationUsingType:properties:将其导出为 PNG 格式。一个简单的例子:

NSBitmapImageRep *imageRep = 
    [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:imageBuffer
                                            pixelsWide:imageWidth
                                            pixelsHigh:imageHeight
                                         bitsPerSample:8
                                       samplesPerPixel:4
                                              hasAlpha:YES
                                              isPlanar:NO
                                        colorSpaceName:NSDeviceRGBColorSpace
                                          bitmapFormat:NSAlphaFirstBitmapFormat
                                           bytesPerRow:imageWidth * 4
                                          bitsPerPixel:32];
NSData *pngData = [imageRep representationUsingType:NSPNGFileType 
                                         properties:propertyDictionary];

如果你不能使用这些 Cocoa 方法,请查看libpng http://www.libpng.org/pub/png/pngcode.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 32 位 RGBA 缓冲区保存到 .png 文件中 (Cocoa OSX) 的相关文章

随机推荐

  • 使用访问令牌下载 bitBucket 私有存储库的 powershell 脚本

    我试图通过首先从 bitbucket 获取代码来自动化构建过程 如下所示 output E FileName xyz url https bitbucket org WhatEver WhatEverBranchName get maste
  • 如何在 HTML 中创建小空间?

    有长破折号和短破折号 是否有一个 en 相当于 有没有一个en相当于纯Ascii 32 我想要一个更好的方式来写这个 123 span class spanen nbsp span 456 span class spanen nbsp sp
  • 从 CGI C 模块返回 http 错误代码

    我有一个用 C 编写的 CGI 模块 在某些情况下我想从该模块返回 HTTP 错误 400 问题是 我不知道如何从模块返回 HTTP 错误 看起来像我的模块中的 return 1 返回 500 内部服务器错误 我尝试过退回 400 等 但还
  • 使用 Android lrucache 的示例

    我需要帮助了解 androids LruCache 我想用来将图像加载到我的网格视图中 以便更好地加载 滚动 有人可以发布使用 LruCache 的示例代码吗 提前致谢 下面是我为使用 LruCache 制作的一个类 这是基于演示的事半功倍
  • 如果通过引用捕获异常,可以修改它并重新抛出吗?

    该标准是否对通过引用捕获的异常以及尝试修改它会发生什么有任何规定 考虑以下代码 class my exception public std logic error public std vector
  • php header excel 和 utf-8

    ob start echo D s ui header Content Type application vnd ms excel charset utf 8 header Content type application x msexce
  • 我可以使用 twiml 向传入的 twilio 呼叫发送数字吗?

    我有一个 twilio 号码 可以使用 twiml 处理来电 这些来电希望接听者在呼叫接通后按一些数字 如果我要拨打电话 我可以使用sendDigits的属性
  • 对象与字典:如何组织数据树?

    我正在编程某种模拟 其数据组织在树中 主要对象是World其中包含一堆方法和一个列表City对象 每个City对象又具有一堆方法和一个列表Population对象 Population对象没有自己的方法 它们只是拥有属性 我的问题是关于后者
  • Pymongo - ValueError:使用 insert_many 时 NaTType 不支持 utcoffset

    我正在尝试将文档从一个数据库增量复制到另一个数据库 某些字段包含以下格式的日期时间值 2016 09 22 00 00 00 而其他的则采用这种格式 2016 09 27 09 03 08 988 我像这样提取并插入文档 pd DataFr
  • 无法识别“nuget”,但其他 nuget 命令可以工作

    我正在尝试使用创建一个 nuget 包http docs nuget org docs creating packages creating and publishing a package From a convention based
  • tkinter 粘性不适用于某些框架

    我正在使用 tkinter 编写纸牌游戏 但我在网格布局管理器 粘性 配置方面遇到了问题 我希望帮助修复我的代码以使框架显示在所需的位置 在我的代码和下面的插图中 有一个框架 b2 其中包含另外两个框架 一个绿色 b2a 一个红色 b2b
  • Java 到 XSD 或 XSD 到 Java

    我知道 使用 JAXB 您可以从 XSD 生成 Java 文件 http www javaworld com javaworld jw 06 2006 jw 0626 jaxb html你也可以从带注释的 POJO 生成 XSD https
  • MVVM DialogService 替代方案

    在学习如何使用 MVVM 模式进行编程时 我遇到了一个常见问题 显示 ViewModel 中的各种对话框 起初它对我来说看起来很简单 我创建了一个 IWindowService 接口 并在 WindowService 类中实现它 我使用此类
  • Javascript webkit-fake-url

    当将图像 例如 从剪贴板粘贴到 webkit 可编辑内容区域时 这是可能的 源代码如下所示 webkit fake url DCAC99B9 BA40 4BA7 A419 9C60AAB081DA image png 能够通过javascr
  • Javascript - “++i”如何工作?

    在尝试使用 i 和 i 之后 我找不到在 for 循环中使用它们的结果之间的差异 例如 for var i 0 i lt 10 i console log i 会产生 0 1 2 3 4 5 6 7 8 9 难道不应该打印出从 1 到 10
  • 比较两个字符串的最佳或最快方法是什么?

    我不确定下面的代码有多快 如果有人知道比这更快 优化的代码 请告诉我 int xstrcmp char s1 char s2 while s1 s2 if s1 0 return 0 return const unsigned char s
  • 基于其他 选项

    如果在其他选择中选择了确切的选项 如何禁用选择中的多个选项 我在此链接上找到了与我类似的问题的答案 http jsfiddle net dZqEu http jsfiddle net dZqEu jQuery 代码如下 this sibli
  • com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery.BigQueryException:连接重置

    我正在尝试使用以下方法读取 GBQ 表 from pyspark sql functions import col current timestamp def analyze spark config query None df spark
  • 检查用户是否遵循路线(iphone)

    我正在制作一个基于导航的应用程序 在此应用程序中 我从用户选择的点绘制一条路线 如果用户不遵循路线 我需要重新计算路线 用于计算我使用的路线Google direction API 为了绘制路线 我使用了这段代码 void drawRout
  • 将 32 位 RGBA 缓冲区保存到 .png 文件中 (Cocoa OSX)

    我需要将像素编辑器应用程序的内容保存到 png 文件中 但我无法找到完成此操作的最佳方法 像素数据存储在 32 位 RGBA 缓冲区中 谁能建议我可以用来完成此任务的任何好工具 编辑 不幸的是 cocotron 不支持 CGImage 和r