小编tom*_*lor的帖子

UIImagePickerController并从现有照片中提取EXIF数据

众所周知,UIImagePickerController在选择后不会返回照片的元数据.但是,应用程序商店中的一些应用程序(Mobile Fotos,PixelPipe)似乎能够读取原始文件和存储在其中的EXIF数据,使应用程序能够从所选照片中提取地理数据.

他们似乎是通过从/ private/var/mobile/Media/DCIM/100APPLE /文件夹中读取原始文件并通过EXIF库运行它来完成此操作.

但是,我无法找到一种方法来匹配从UIImagePickerController返回的照片到磁盘上的文件.我已经探索了文件大小,但原始文件是JPEG,而返回的图像是原始UIImage,因此无法知道所选图像的文件大小.

我正在考虑制作一个哈希表并匹配每个图像的前x个像素.虽然这看起来有点过头了,但可能很慢.

有什么建议?

iphone gps cocoa-touch exif uiimagepickercontroller

56
推荐指数
5
解决办法
4万
查看次数

当存在新的API时,构建向后兼容的OS X应用程序?

我正在尝试升级应用程序(Clarke)以提供10.6兼容性.

我的计划是使用两种不同的代码路径,具体取决于所使用的OSX版本.

在10.5上它将使用一个控制器,它由完全自定义代码组成,不依赖于任何特定的Cocoa API.在10.6上,它将使用另一个控制器,它根据相同的抽象类将新的CoreLocation API包装在一个相同的接口中.在运行时,应用程序将通过检测操作系统版本在控制器之间切换.

这在10.6 SDK上构建的10.6上运行良好,但同样的构建在10.5上爆炸:

10/09/2009 18:30:50 [0x0-0x12f12f].uk.co.tomtaylor.Clarke[4575] dyld: unknown required load command 0x80000022 
10/09/2009 18:30:51 com.apple.launchd[403] ([0x0-0x12f12f].uk.co.tomtaylor.Clarke[4575]) Exited abnormally: Trace/BPT trap 
Run Code Online (Sandbox Code Playgroud)

如果我构建10.5 SDK,显然无法编译CoreLocation.

我希望能够为这个应用程序提供单个二进制文件.有没有办法从10.5中"隐藏"CoreLocation API?

macos xcode cocoa objective-c xcodebuild

8
推荐指数
2
解决办法
1164
查看次数

从屏幕外NSView生成缩放图像

我在Cocoa应用程序中有一系列屏幕外NSView,用于组合PDF进行打印.这些观点不在NSWindow中,也不以任何方式显示.

我希望能够生成该视图的缩略图,就像PDF看起来一样,但缩小到适合某个像素大小(约束到宽度或高度).这需要尽可能快,所以我想避免渲染为PDF,然后转换为光栅和缩放 - 我想直接去光栅.

目前我正在做:

NSBitmapImageRep *bitmapImageRep = [pageView bitmapImageRepForCachingDisplayInRect:pageView.bounds];
[pageView cacheDisplayInRect:pageView.bounds toBitmapImageRep:bitmapImageRep];
NSImage *image = [[NSImage alloc] initWithSize:bitmapImageRep.size];
[image addRepresentation:bitmapImageRep];
Run Code Online (Sandbox Code Playgroud)

这种方法运行良好,但我无法弄清楚如何在渲染bitmapImageRep之前将缩放应用于NSView.我想避免使用scaleUnitSquareToSize,因为据我所知,它只会改变边界,而不是NSView的框架.

有关最佳方法的任何建议吗?

macos cocoa objective-c nsview

6
推荐指数
1
解决办法
1960
查看次数

OSX Cocoa应用程序的空白进程名称?

我正在开发一个运行LSUIElement集的OSX应用程序(Clarke)(仅限系统菜单 - 没有托盘图标,不会出现在cmd-tab中).

它工作得很好,但有人只是指出它在Activity Monitor列表中有一个空白的进程名称.什么也没说.其他所有东西都有一个名字.甚至其他应用程序运行在LSUIElement.

我试图在网上搜索,但我找不到有人在谈论这个.我到底应该寻找什么?

macos cocoa osx-leopard process

5
推荐指数
2
解决办法
1235
查看次数

在主管启动后启动动态simple_one_for_one工作人员

我有一个命名Supervisor,监督许多simple_one_for_one工作人员,他们定期为我的系统上的每个用户执行任务.

我希望应用程序Supervisor在第一次启动时为每个用户启动一个worker ,并且我希望应用程序Supervisor在以后重新启动时执行相同操作,无论出于何种原因.

目前,我动态地启动所有的孩子中Applicationstart(type, args)回调,但如果Supervisor重新启动,不会启动所有的子进程.

如何确保所有动态子工作程序在Supervisor启动/重新启动后立即启动?

(我的应用程序在Elixir中,但同样的原则适用于Erlang.)

erlang elixir erlang-otp erlang-supervisor

4
推荐指数
1
解决办法
376
查看次数