问题标签 [nsimagerep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
348 浏览

objective-c - NSImageRep 分辨率错误?

MacOS 10.7.4 带有新图标,其图像代表为 144 DPI。不好的是,当我在 NSImage 中加载其中一个图标时,我只能得到大小为 512px 的代表。我的意思是:我在 NSImage 中加载了一个 1024px/144dpi icns 文件,然后我询问每个图像代表的大小……没有代表的大小为 1024px,我只得到最大的大小。512px(无论代表是否具有 72dpi 而不是 144dpi 的分辨率:实际上 10.7.4 中的新图标,如 TextEdit 或 Automator,除了 1024px 存在于 144dpi 的单个代表中之外,每种尺寸都有两种分辨率的代表)。

为什么 NSImageRep 似乎不了解它的真实分辨率?为什么我只针对 1024px/144dpi 而不是例如针对 512px/144dpi 得到这个问题?

如果我读取 NSImage 的 TIFFRepresentation 并将其写回一个文件,我会得到一个正确的 1024px/144dpi TIFF 文件,而如果我通过 CGImageSource/CGImageDestination 编写与 kUTTypeTIFF 相同的 NSImage,我会得到一个 1024px/72dpi 文件。

所有这些事情都让我变得非常困惑。

非常感谢

0 投票
1 回答
679 浏览

objective-c - 更改 CGImageDestination dpi

我知道如何更改 NSImageRep 的 dpi,但我不知道如何使 CGImage API 反映此更改...有没有办法让 CGImage 写入不是标准 72dpi 的文件?如果我将 NSImageRep 设置为 144dpi,当我使用 CGImage API 将其写入文件时,我总是会获得 72dpi 图像...

非常感谢

0 投票
1 回答
239 浏览

objective-c - CGImage API 和 ICO 文件

我遇到了一些看起来像错误的事情:如果我使用 CGImage API 创建 ICO 文件,我会得到第一个带有颜色配置文件的代表(256px),而所有其他代表都没有颜色配置文件(实际上他们看起来更亮)。我还尝试在每个图像代表中设置颜色配置文件(在原始 NSImageRep 和通过图像属性字典的 CGDestination 中),但没有任何变化。我们可以肯定地说这是一个错误吗?

0 投票
0 回答
325 浏览

cocoa - -[NSBitmapImageRep representationUsingType:properties:] 导出特定的 BMP 配置?

我试图弄清楚如何从 NSBitmapImageRep 导出 BMP 数据,但似乎没有我可以添加任何属性来指定如何创建 BMP。具体来说,我想导出一个 ARGB8(即 alpha、red、green、blue 各 8 位)。当我传入 NSBMPFileType 类型时,输出应该如何构造,有没有办法改变这种输出方式?如果没有,任何人都可以推荐一种更好的方法来做我想做的事情吗?

0 投票
1 回答
289 浏览

objective-c - 如何为自定义 NSImageRep 子类实现 -draw

我有兴趣创建一个可以保存双精度值的 NSImageRep 子类。标准的 NSBitmapImageRep 可以保存单精度浮点数,但会阻塞双精度数。我喜欢 NSBitmapImageRep 公开数据缓冲区以进行操作,并且我希望保留在适当位置操作数据的能力,而不是操作需要将其转换为图像以进行显示的单独缓冲区。

我认为子类化是相当直接的,除了我不确定如何处理最基本的部分:绘制图像。文档将 -draw 列为我需要实现的方法,这是有道理的,但是绘制位图的最佳方法是什么?

我看到一个犹豫的建议是画很多小矩形,大概每个像素一个: 如何为 NSImage 实现自定义图像表示

有没有更有效的方法?我已经查看并找不到带有位图数据的自定义 NSImageRep 的工作示例——大多数示例使用矢量数据。

另外,我觉得有趣的是实现的方法是简单的-draw,而不是任何形式的有界绘图。有没有办法确定 NSImageRep 中的当前剪辑区域是什么,或者避免绘制不需要的图像部分?

0 投票
1 回答
1143 浏览

ios - NSImage 和 UIImage 给出不同的 NSData 表示

场景:我在 iPhone 相机胶卷中有一张图像。我使用它访问它ALAssetLibrary并获取一个ALAsset对象。我使用类似下面的代码从中得到一个UIImageNSData对象。

然后,我使用 Image Capture 将相机胶卷中的图像复制到我的 Mac 上。然后NSImage我在我的 Mac 代码中使用打开复制的图像并尝试NSData使用以下代码获取表示。

问题:不幸的是,NSData我得到的两个表示非常不同。我希望能够NSData在两种情况下获得相同的表示(因为它是同一个文件)。然后我可以继续对NSData对象进行散列并比较散列,以得出两者(可能)是相同图像的结论。理想情况下,我想要以下两个功能;

这样我在 OS X 和 iOS 中得到的 NSData* 表示是完全相同的,因为它们来自同一个源图像。

我试过的:

我已经尝试过如何从对象中获取 UIImage 对象ALAsset,我尝试过(以及在 OS XUIImagePNGRepresentation中获取的相应对象)。NSData我还尝试使用不同的参数来获取 OS X 中的表示,但没有任何结果。我还尝试CGIImageRef在两个平台上创建一个,将其转换为位图并逐个像素地读取它们,甚至那些似乎已关闭(是的,我确实意识到它们NSBitmapImageRep具有不同的坐标系)。

0 投票
1 回答
290 浏览

png - 将 NSImage 保存为没有 alpha 和 5 位颜色的 PNG

我有一个 NSImage,我想保存为 PNG,但删除 alpha 通道并使用 5 位颜色。我目前正在这样做以创建我的 PNG:

我已经阅读了很多关于 SO 的类似问题,但对最佳/正确的使用方法感到困惑。我是否创建一个新的 CGGraphics 上下文并绘制到其中?我可以直接使用这些参数创建一个新的 imageRep 吗?任何带有代码片段的帮助将不胜感激。

干杯

戴夫

0 投票
1 回答
894 浏览

image - 从 NSImage 获取 glTexture 的最有效方法?

下面更新...

面向 10.8+ 的 OpenGL Cocoa/OSX 桌面应用程序

我有一种情况,我每帧接收一次 NSImage 对象,并希望将其转换为 openGL 纹理(它是来自 IPCamera 的视频帧)。从 SO 和互联网上,我可以找到将 NSImage 转换为 glTexture 的最有用的实用方法是下面的代码。

虽然这对于偶尔的(IE 加载)情况来说很好,但它是一个巨大的性能消耗,并且每帧运行一次很糟糕。我已经分析了代码并将瓶颈缩小到两个调用。这些调用加起来占整个应用程序运行时间的近三分之二。

  1. 位图制作

    认为问题可能出在我获取位图的方式上,并且因为我听说过关于 TIFFRepresentation 的性能不好,所以我尝试了这个,它确实更快,但只有一点点并且还引入了一些奇怪的颜色偏移(一切看起来都是红色的):

    /li>
  2. glTexImage2D 调用(我不知道如何改进它。)

我怎样才能使下面的方法更有效?

或者,告诉我我做错了,我应该去别处看看?帧以 MJPEG 格式输入,因此我可以在将 NSData 转换为 NSImage 之前使用它。但是,它是 jpeg 编码的,所以我必须处理它。我实际上还希望 NSImage 对象用于应用程序的另一部分。

简介截图:

在此处输入图像描述

更新

根据下面布拉德的评论,我决定简单地绕过 NSImage。在我的特殊情况下,我能够在将 JPG 数据转换为 NSImage 之前将其作为 NSData 对象访问,因此效果很好:

使用或多或少与上述相同的方法,但直接从位图表示开始,CPU 使用率从 80% 下降到 20%,我对速度感到满意。我有我的应用程序的解决方案。

我仍然想知道我最初的问题是否有答案,或者最好只是接受这个作为避免什么的对象教训。最后,我仍然想知道是否有可能改善 glTexImage2D 调用的加载时间——尽管它现在已经在合理的范围内,但它仍然占用了该方法 99% 的负载(但也许没关系。)

===========

0 投票
0 回答
114 浏览

objective-c - 将 PDF 转换为 NSImageRep (png) 时的彩色伪影

我想将不同的 PDF 页面转换为 png。之后,我遍历所有像素以搜索彩色像素。主要目标是获取 PDF 的彩色页面。对于大多数页面,它运行良好。但是在某些页面上,我用红色(字母左侧)和蓝色(字母右侧)着色了工件。
这是 PDF 的原件:( 来源:brebook.dePDF中的原件


这是 png 中转换后的字母:

PDF中的原件

我怎样才能防止这种丑陋的文物。我不能用这个彩色像素来使用我的整个想法。
这是将单个页面转换为 png 的代码:

非常感谢您的帮助!!!

0 投票
1 回答
89 浏览

objective-c - 让 IKImageView 知道我的自定义 NSImageRep

在我的应用程序中,我编写了一个自定义NSImageRep来处理专有图像格式。应用程序的主视图是IKImageView,我打算将自定义的图像加载到其中以NSImageRep供查看和操作。

如果我创建CGImageRef这些图像中的一个,然后将引用传递给图像视图,它可以正常工作,但这并不理想。如果可能的话,我想使用IKImageView'setImageWithURL:方法,因为这是文档中提到的首选方法,而且它更干净。不幸的是,该视图似乎完全不了解我NSImageRep,并且根本无法加载图像。

有什么办法可以让图像视图理解自定义表示?