Ionic从相机胶卷获取所有缩略图

时间:2016-08-16 17:02:37

标签: ios objective-c cordova ionic-framework camera-roll

我正在构建一个应用,用户需要能够从相机胶卷中选择照片

我知道我可以使用cordova-camera插件一次选择一张照片,或者使用cordova-imagePicker插件选择多张照片,但我想要一个自定义的感觉,你可以在app中看到所有图片。< / p>

在Android上我使用了cordova-gallery-api插件,该应用程序感觉有点整齐的图像有点不稳定,但在缩略图上效果很好。

当我在IOS上尝试使用Gallery API时,如果安装了插件,则构建失败并带有

  

**建筑失败**

     

以下构建命令失败:       Ld build / emulator / .app / normal i386   (1次失败)   命令的错误代码65:带有args的xcodebuild:-xcconfig,/ platforms / ios / cordova / build-debug.xcconfig,-project,.xcodeproj,ARCHS = i386,-target ,, - configuration,Debug,-sdk,iphonesimulator,构建,VALID_ARCHS = I386,CONFIGURATION_BUILD_DIR = /平台/ IOS /建造/仿真器,SHARED_PRECOMPS_DIR = /平台/ IOS /构建/ sharedpch   ERROR构建其中一个平台:错误:/ platforms / ios / cordova / build:命令失败,退出代码为2   您可能没有构建此项目所需的环境或操作系统   错误:/ platforms / ios / cordova / build:命令失败,退出代码为2

之前我发现cordova-camera-roll插件看起来做同样的事情,但只针对IOS。我试了一下,它有效;但是,它只会返回滚动时感觉不稳定的全尺寸图像。

我尝试过的插件都比较旧,而且我对Objective-C没有太多经验,如果你可以帮助改变相机滚动插件以返回缩略图,或者让画廊插件在IOS上工作,或者建议另一个插件,非常感谢。

PS。 为了方便使用,相机胶卷功能

- (void)getPhotos:(CDVInvokedUrlCommand*)command
{

  // Grab the asset library
  ALAssetsLibrary *library = [IonicCameraRoll defaultAssetsLibrary];

  // Run a background job
  [self.commandDelegate runInBackground:^{

    // Enumerate all of the group saved photos, which is our Camera Roll on iOS
    [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

      // When there are no more images, the group will be nil
      if(group == nil) {

        // Send a null response to indicate the end of photostreaming
        CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
        [pluginResult setKeepCallbackAsBool:YES];
        [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];

      } else {

        // Enumarate this group of images

        [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {

          NSDictionary *urls = [result valueForProperty:ALAssetPropertyURLs];

          [urls enumerateKeysAndObjectsUsingBlock:^(id key, NSURL *obj, BOOL *stop) {

            // Send the URL for this asset back to the JS callback
            CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:obj.absoluteString];
            [pluginResult setKeepCallbackAsBool:YES];
            [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];

          }];
        }];
      }
    } failureBlock:^(NSError *error) {
      // Ruh-roh, something bad happened.
      CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:error.localizedDescription];
      [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
    }];
  }];

}

由于

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。

gallery-api工作正常,它只需要我在Xcode中启用模块