小编Ada*_*dam的帖子

CI过滤器创建黑白图像?

我有一个CIImage我需要在我的Cocoa/Objective C程序中从颜色转换为Black和White.Peter H.之前向我指出了这个链接http://www.codingadventures.com/2008/06/threshold-filter-in-glsl/作为一种潜在的解决方案...但是我在那里编译内核例程时遇到了麻烦(参见单独的线程,如果感兴趣).

所以我想知道其他一个内置的CIFilter是否会完成我想要做的事情.我不想要灰度图像...我希望结果图像中的每个像素都是黑色或白色 - 我只需要能够告诉过滤器如何确定哪些像素应该变成黑色哪个像素应该变成白色.Photoshop中的"阈值"滤镜就是这样 - 它让我指定"阈值"然后它使用此值来决定哪些像素变为白色而哪些像素变为黑色.这就是我试图通过我的Xcode项目中的代码"复制".

如果其中一个内置过滤器可以用于此任何想法?谢谢.

cocoa objective-c

9
推荐指数
3
解决办法
9345
查看次数

Xcode Linker错误:_OBJC_CLASS _ $ _ CIImage

在构建我的Xcode项目时,我收到一个链接器错误,我无法弄清楚如何解决.如果我构建以下代码,编译步骤就完成了,但是我从链接器中得到一个错误,说"_OBJC_CLASS _ $ _ CIImage",从AppController.o中的Objc-class-ref-to-CIImage引用,然后是第二个错误看起来完全相同,除了CIImage被CIFilter替换后跟一个声明"未找到符号"

CIFilter *transform = [CIFilter filterWithName:@"CIAffineTransform"];
[transform setValue:inputBitmap forKey:@"inputImage"];
NSAffineTransform *affineTransform = [NSAffineTransform transform];
[affineTransform rotateByDegrees:3];
[transform setValue:affineTransform forKey:@"inputTransform"];
CIImage * result = [transform valueForKey:@"outputImage"];
Run Code Online (Sandbox Code Playgroud)

这段代码在我的AppController.m中,并且在我将以下语句放在顶部后出现了Linker错误:

#import "QuartzCore/CIFilter.h"
Run Code Online (Sandbox Code Playgroud)

我把那个import语句放进去了,因为没有它,我在第一行代码中遇到了"No + filterWithName method found"的编译错误,我在某处读到Cocoa自动包含CIImage.h而不是CIFilter.h.所以......使用#import,编译器错误消失但我收到链接器错误.:(

是什么导致了Linker错误以及如何摆脱它?

仅供参考:我尝试搜索重复文件,如本文另一个"xcode链接器错误"主题中所述,但在我的项目中找不到任何重复文件.我也麻烦地创建了一个全新的项目,并将我的所有代码从旧项目复制到新项目,只是为了消除我不知何故意破坏我的项目文件的可能性.我的新项目中仍然存在同样的问题.

谢谢

xcode cocoa objective-c

6
推荐指数
2
解决办法
7539
查看次数

如何将JPG文件加载到NSBitmapImageRep?

Objective-C/Cocoa:我需要将JPG文件中的图像加载到二维数组中,以便我可以访问每个像素.我正在尝试(未成功)将图像加载到NSBitmapImageRep中.我在以下两行代码中尝试了几种变体:

NSString *filePath = [NSString stringWithFormat: @"%@%@",@"/Users/adam/Documents/phoneimages/", [outLabel stringValue]];  //this coming from a window control
NSImageRep *controlBitmap = [[NSImageRep alloc] imageRepWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)

使用显示的代码,我得到一个运行时错误: - [NSImageRep imageRepWithContentsOfFile:]:无法识别的选择器发送到实例0x100147070.

我试过用以下代码替换第二行代码:

NSImage *controlImage = [[NSImage alloc] initWithContentsOfFile:filePath];
NSBitmapImageRep *controlBitmap = [[NSBitmapImageRep alloc] initWithData:controlImage];
Run Code Online (Sandbox Code Playgroud)

但这会产生编译器错误"不兼容类型",说initWithData想要NSData变量而不是NSImage.

我还尝试了各种其他方法来完成这项工作,但由于编译器或运行时错误,所有方法都不成功.有人可以帮我弄这个吗?我最终需要以相同的方式加载一些PNG文件(因此,对两者都有一致的技术会很好).

如果你知道一个更简单/更简单的方法来完成我想要做的事情(即,将图像变成二维数组),而不是使用NSBitmapImageRep,那么请告诉我!顺便说一句,我知道路径是有效的(用fileExistsAtPath确认) - outLabel中的文件名是一个.jpg扩展名的文件.

谢谢你的帮助!

cocoa objective-c

3
推荐指数
1
解决办法
3308
查看次数

标签 统计

cocoa ×3

objective-c ×3

xcode ×1