我将OS X binary版本与我的项目捆绑在一起,并使用NSTask来调用二进制文件.您需要为NSTask指定“MAGICK_HOME”和“DYLD_liBRARY_PATH”环境变量才能正常工作.这是我正在使用的片段.
请注意,此示例已硬编码为使用“复合”命令…并使用硬编码参数,但您可以将其更改为您喜欢的任何内容…它只是用作概念证明.
-(ID)init{ if ([super init]) { Nsstring* bundlePath = [[NSBundle mainBundle] bundlePath]; Nsstring* imageMagickPath = [bundlePath stringByAppendingPathComponent:@"/Contents/Resources/ImageMagick"]; Nsstring* imageMagicklibraryPath = [imageMagickPath stringByAppendingPathComponent:@"/lib"]; MAGICK_HOME = imageMagickPath; DYLD_liBRARY_PATH = imageMagicklibraryPath; } return self;}-(voID)composite{ NSTask *task = [[NSTask alloc] init]; // the ImageMagick library needs these two environment variables. NSMutableDictionary* environment = [[NSMutableDictionary alloc] init]; [environment setValue:MAGICK_HOME forKey:@"MAGICK_HOME"]; [environment setValue:DYLD_liBRARY_PATH forKey:@"DYLD_liBRARY_PATH"]; // helper function from // http://www.karelia.com/cocoa_legacy/Foundation_CategorIEs/NSfileManager__Get_.m Nsstring* pwd = [Helpers pathFromUserlibraryPath:@"MyApp"]; // executable binary path Nsstring* exe = [MAGICK_HOME stringByAppendingPathComponent:@"/bin/composite"]; [task setEnvironment:environment]; [task setCurrentDirectoryPath:pwd]; // pwd [task setLaunchPath:exe]; // the path to composite binary // these are just example arguments [task setArguments:[NSArray arrayWithObjects: @"-gravity",@"center",@"stupID hat.png",@"IDR663.gif",@"bla.png",nil]]; [task launch]; [task waitUntilExit];}
此解决方案将整个库的大部分与您的版本捆绑在一起(目前为37MB),因此对于某些解决方案可能不太理想,但它正在运行:-)
@H_404_0@ 总结以上是内存溢出为你收集整理的objective-c – 使用OS X App捆绑ImageMagick库?全部内容,希望文章能够帮你解决objective-c – 使用OS X App捆绑ImageMagick库?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)