问题标签 [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 投票
2 回答
561 浏览

objective-c - NSBitmapImageRep 和多页 TIFF

我有一个可以打开 TIFF 文档并显示它们的程序。我正在使用 setFlipped:YES。

如果我只是处理单页图像文件,我可以

而且,除了被翻转的视图之外,似乎正确地绘制了图像。

但是,由于某种原因,设置图像的翻转似乎不会影响单个表示的翻转。

这是相关的,因为多页 TIFF 的多个图像似乎显示为同一图像的不同“表示”。所以,如果我只画 IMAGE,它就会翻转,但如果我画一个特定的表示,它就不会翻转。我似乎也无法弄清楚如何选择哪个表示是绘制 NSImage 时绘制的默认表示。

谢谢。

0 投票
2 回答
268 浏览

objective-c - 如何避免 NSCachedImageRep

我正在使用来自 PDF 的 NSImage。当我最初创建图像时,它只有一个 NSImageRep,即 NSPDFImageRep。这很好。我可以使用它。我可以找出它有多少页,然后转到指定的页面,然后绘制它等等。

问题是,我一转身,它就变成了一个 NSCachedImageRep,它似乎没有多个页面。现在,如果我将 PDFImageRep 保存在一个单独的变量中,它会被跟踪,但它不再与图像相关联,所以当我绘制图像时,它仍然在同一页面上。

我错过了什么?

谢谢。

0 投票
2 回答
1089 浏览

objective-c - NSImageRep 混乱

我有一个来自 PDF 的 NSImage,所以它有一个 NSPDFImageRep 类型的表示。我做了一个图像 setDataRetained:YES; 以确保它仍然是 NSPDFImageRep。后来想换个页面,所以得到rep,设置当前页面。这可以。

问题是当我绘制图像时,只有第一页出来。

我的印象是,当我绘制一个 NSImage 时,它​​会选择一个表示,然后绘制该表示。现在,图像只有一个代表,所以这就是正在绘制的那个,那就是 PDFrep。那么,为什么当我绘制图像时,它没有绘制正确的页面?

但是,当我绘制表示本身时,我得到了正确的页面。

我错过了什么?

0 投票
2 回答
1068 浏览

cocoa - 是否有将 NSImage 调整为最大文件大小的最佳方法?

这是我到目前为止所得到的:

该代码假定 200x200 PNG 将小于 128K,这是我的大小限制。200x200 足够大,但如果可能的话,我更愿意将尺寸最大化。

这是我的两个问题:

  1. 代码不起作用。我检查了导出文件的大小,它与原始文件大小相同。
  2. 有没有办法在我导出之前预测输出文件的大小,所以我可以最大化尺寸但仍然得到小于 128K 的图像?

这是工作代码。它相当草率,可能会使用一些优化,但此时它运行得足够快,我不在乎。它对大多数图片进行了 100 倍以上的迭代,并且以毫秒为单位结束。此外,此方法是在 上的类别中声明的NSImage

0 投票
1 回答
2842 浏览

cocoa - 如何用 Cocoa 压缩 jpeg 图像?

我有一个 jpeg 图像,我希望能够使用 Cocoa/Core Image/Core Graphics 逐步压缩它。比如我有A.jpg(3MB),我压缩A得到B.jpg(1MB),压缩B得到C.jpg(400KB),以此类推,直到图像无法再压缩。

我正在尝试使用 NSBitmapImageRep representationUsingType:properties 但没有取得多大成功。我使用从压缩图像数据创建的图像代表来尝试进一步压缩,但是如果我使用与用于创建初始压缩数据的压缩因子相同的压缩因子,则效果不佳。

这是我一直在争论的代码

这是我的结果

0 投票
3 回答
4442 浏览

objective-c - NSImage 大小错误

我想我在这里遗漏了一些非常基本的东西。如果我使用我知道存在的合法 URL/路径执行此操作:

然后我向控制台报告宽度为-2080177216,高度为0。虽然我知道宽度实际上是50,高度是50。我尝试调用isValid并返回YES,我还尝试检查大小第一个表示,它返回相同的混乱值。为什么图片加载不正确?

0 投票
1 回答
1228 浏览

cocoa - 使用 NSImage 创建和编写调色板 RGBA PNG

我正在尝试使用 Cocoa 框架*创建使用 RGBA 调色板(每个调色板条目 32 位)的调色板PNG 图像(每像素 8 位)。

我尝试了几种[NSBitmapImageRep initWithBitmapDataPlanes:…]方法组合。它似乎为bitsPerSample:2 bitsPerPixel:8.

然而,当我尝试用我写这样的位图时,[NSBitmapImageRep representationUsingType:NSPNGFileType…]我得到:

如果我尝试其他位深度,那么我会得到每像素 32 位(非调色板)图像。


*)我知道我可以使用libpng,但这不是我正在寻找的答案。

0 投票
1 回答
1102 浏览

objective-c - 如何为 NSImage 实现自定义图像表示

我正在开发一个应用程序来绘制和处理 NSimage 类当前不支持的特定图像格式。在这种特定格式中,图像采用 1D 二进制表的形式,前面有一个 ASCII 标头,用于描述数据(数字维度、图像大小、每像素位...)。

我在Coco 绘图指南中读到可以创建新的图像表示。我是 Coca 和 Objectiv-C 编程的新手,关于这个主题,我发现Coco 绘图指南的解释非常简短,对我没有太大帮助。我现在有兴趣通过一些有关如何创建新图像表示的示例代码来获取更多详细信息。此外,我对了解如何覆盖 initWithData 和 Draw 方法以使 Cocoa 应用程序正确解释新的图像表示特别感兴趣。

有谁知道与我分享更详细描述该方法的链接?

0 投票
1 回答
816 浏览

objective-c - 32位大端浮点数据到CGImage

我正在尝试编写一个读取 FITS 图像的应用程序。FITS代表灵活图像传输格式,它是一种主要用于存储与天体物理学相关的科学数据的格式,其次,它被大多数使用CCD相机拍摄天空的天文爱好者使用。因此 FITS 文件包含图像,但它们也可能包含表格和其他类型的数据。由于我是 Objectiv-C 和 cocoa 编程的新手(我一年前开始这个项目,但由于我很忙,我几乎一年都没有碰它!),我开始尝试创建一个库,让我可以转换文件的图像内容到 NSImageRep。FITS 图像二进制数据可能是 8 位/像素、16 位/像素、32 位/像素无符号整数或 32 位/像素、64 位/像素浮点数,均采用大端序。

我设法在 16 位/像素、32 位/像素无符号整数中获得灰度 FITS 图像的图像表示,但是当我寻找 32 位/像素浮点时,我得到了非常奇怪的行为(并且这个问题对于 RGB 32 位是值得的/pix 浮点数)。到目前为止,我还没有测试 8 位/像素整数数据和基于 16 位/像素和 32 位/像素整数数据的 RGB 图像,因为我还没有在网上找到示例文件。

以下是我创建灰度图像表单适合文件的代码:

这是 32/bits/pix 浮点数据的结果快照:NASA HST 图片

图像似乎向左移动,但更烦人的是我在同一帧中得到了同一图像的两个表示(帧的上部和下部)。

而对于其他一些文件,行为更奇怪: Star Field 1,(对于其他链接请参阅评论,作为新用户,我在此文本中不能有两个以上的链接。我也不能直接放图片。)

所有三个星域图像都是相同拟合文件内容的表示。我在帧的底部获得了正确的图像表示(星星太饱和了,但我还没有使用编码)。但是,在上半部分,每次我打开同一个文件时,我都会得到不同的图像表示。看起来每次我打开这个文件时,它都不会使用相同的字节序列来生成图像表示(至少对于上部而言)。

另外,我不知道底部重复的图像是否包含数据的一半,而上面的图像包含另一半数据,或者它是否只是数据的副本。

当我以原始格式(人类可读数字)转换我的数据内容时,该数字与像素中应该在良好位置的内容兼容。这让我认为问题不是来自数据,而是来自 CGImage 解释数据的方式,即我在传递给 CGImageCreate 函数的参数中的某处是错误的。

在 RGB 适合图像数据的情况下,我在最后将 18 个图像获取到我的帧中。R、G 和 B 图像各 6 个副本。全部为灰度。请注意,对于 RGB 图像,我的代码是不同的。

我究竟做错了什么 ?

0 投票
1 回答
911 浏览

calayer - 使用层支持的 NSView 作为 NSDockTile contentView

有没有办法使用支持NSView的层作为contentViewa NSDockTile?尝试了各种技巧,但我得到的只是透明区域。还尝试了不同的路线并从中获取图像CALayer并将其用于[NSApp setApplicationIconImage:],但也没有运气 - 我认为这里的问题是为屏幕外图像创建图像表示。