使用ALAsset从GRKPhoto UIImage

我正在使用grabKit ,以允许用户将他们的Instagram,Facebook和本地图片导入到我的应用程序。 问题出在照片是本地的时候。 在这种情况下,我使用一种在用户select照片时起作用的方法。

我发现的标准代码如下:

 - (void)picker:(GRKPickerViewController *)picker didSelectPhoto:(GRKPhoto *)photo {

     [popover dismissPopoverAnimated:YES];

     GRKImage * originalImage = [photo originalImage];

     NSLog(@“所选第一张照片的原始图像的URL是:%@”,originalImage.URL);
     NSLog(@“这个图像的大小是:%dx%d”,originalImage.width,originalImage.height);

     //如果url以assets-library开头://
     if([[originalImage.URL absoluteString] hasPrefix:@“assets-library://”]){

         //实例化一个库
         ALAssetsLibrary * library = [[ALAssetsLibrary alloc] init];

         //请求URL的“资产”。 资产是Photo应用程序中图像的表示forms。
         [library assetForURL:originalImage.URL
                  resultBlock:^(ALAsset *资产){

                      //在这里,我们有资产,让我们从中检索图像
                      CGImageRef imgRef = [[asset defaultRepresentation] fullResolutionImage];

                      //从CGImage开始,我们来构build一个UIImage
                      UIImage * fullResImage = [UIImage imageWithCGImage:imgRef];

                      NSLog(@“UIImage for URL%@ is%@”,originalImage.URL,fullResImage);

                  } failureBlock:^(NSError * error){
                      //发生了一些错误
                  }];
 }

通过做一些debugging,我发现应用程序崩溃,当我尝试从ALAsset ,人,在这一行中CGImageRef imgRef = [[asset defaultRepresentation] fullResolutionImage];CGImageRef imgRef = [[asset defaultRepresentation] fullResolutionImage];

如果它可以帮助解决我的问题,我在控制台中得到的消息是:

 ***终止应用程序由于未捕获的exception“CALayerInvalidGeometry”,原因:“CALayer位置包含NaN:[nan 653]'

 ***第一个投掷堆栈:

 (0x42f8012 0x2ad9e7e 0x42f7deb 0x161ee0b 0x161efa5 0x161f6eb 0x174fe53 0x18191c0 0x181941a 0x21fad 0x219f1 0x13de70 0xf3c03 0x1c0f42f 0x1c21182 0x1c21394 0x2aed705 0x181b93c 0x181b9ac 0x2aed705 0x181b93c 0x181b9ac 0x19d51d3 0x42c0afe 0x42c0a3d 0x429e7c2 0x429df44 0x429de1b 0x3b9d7e3 0x3b9d668 0x170dffc 0x69432 0x30f5)

 libc ++ abi.dylib:terminate调用抛出exception

感谢您的时间和兴趣!

通常CALayerInvalidGeometryNAN是由CALayer帧的无效设置产生的,而这个设置又可以由view.frame来设置。 这可能是某个地方的层位置/转换设置不正确。 既然你不直接这样做,它似乎是一个Grabkit的错误。 在这里存档。

你可以考虑进去CGImageRef imgRef = [[asset defaultRepresentation] fullResolutionImage]; 使用F7向Grabkit提供关于崩溃的更多信息。