AssetsLibrary.framework

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];


[library enumerateGroupsWithTypes:ALAssetsGroupAll


  usingBlock:^(ALAssetsGroup *group, BOOL *stop)


{


NSLog(@"%@", group);


[group setAssetsFilter:[ALAssetsFilter allAssets]];


NSLog(@"名称:%@", [group valueForProperty:ALAssetsGroupPropertyName]);


NSNumber* groupType = [group valueForProperty:ALAssetsGroupPropertyType];


switch ([groupType unsignedIntegerValue]) {


case ALAssetsGroupAlbum:


{


NSLog(@"来自我的电脑或者是在设备上创建");


NSString* persistentID = [group valueForProperty:ALAssetsGroupPropertyPersistentID];


if ([[persistentID substringWithRange:NSRangeFromString(@"0,8")] isEqualToString:@"00000000"])


{


NSLog(@"来自我的电脑");


}


break;


}


case ALAssetsGroupSavedPhotos:


NSLog(@"相机胶卷");


break;


case ALAssetsGroupPhotoStream:


NSLog(@"我的照片流");


break;


default:


break;


}


}


failureBlock: ^(NSError *error)


{


NSLog(@"No groups");


}];







//获取相册所有图片并遍历

self.assetsLibrary = [[ALAssetsLibrary alloc] init];

    dispatch_queue_t dispatchQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(dispatchQueue, ^(void) {

        // 遍历所有相册

        [self.assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll

                                          usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

                                              // 遍历每个相册中的项ALAsset

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

                                                  

                                                  __block BOOL foundThePhoto = NO;

                                                  if (foundThePhoto){

                                                      *stop = YES;

                                                  }

                                                  // ALAsset的类型

                                                  NSString *assetType = [result valueForProperty:ALAssetPropertyType];

                                                  if ([assetType isEqualToString:ALAssetTypePhoto]){

                                                      foundThePhoto = YES;

                                                      *stop = YES;

                                                       ALAssetRepresentation *assetRepresentation =[result defaultRepresentation];

                                                      CGFloat imageScale = [assetRepresentation scale];

                                                      UIImageOrientation imageOrientation = (UIImageOrientation)[assetRepresentation orientation];

                                                      dispatch_async(dispatch_get_main_queue(), ^(void) {

                                                          CGImageRef imageReference = [assetRepresentation fullResolutionImage];

                                                          // 对找到的图片进行操作

                                                          UIImage *image =[[UIImage alloc] initWithCGImage:imageReference scale:imageScale orientation:imageOrientation];

                                                          if (image != nil){

                                                              //获取到第一张图片

                                                              

                                                          } else {

                                                              NSLog(@"Failed to create the image.");

                                                          } });

                                                  }

                                              }];

                                          }

                                        failureBlock:^(NSError *error) {

                                            NSLog(@"Failed to enumerate the asset groups.");

                                        }];

        

    });




//保存图片到相册的两种方法

- (void)saveImageToPhotos:(UIImage*)savedImage


{

    //第一种保存图片

    UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);

    

    

    // 第二种保存图片 ALAssetsLibrary

    //   NSString *imageURL = nil;

    //    ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];

    //    ALAssetsLibraryWriteImageCompletionBlock completeBlock = ^(NSURL *assetURL, NSError *error){

    //        if (!error) {

    //#pragma mark get image url from camera capture.

    //            imageURL = [NSString stringWithFormat:@"%@",assetURL];

    //

    //        }

    //    };

    //

    //    if(savedImage){

    //

    //        [assetsLibrary writeImageToSavedPhotosAlbum:[savedImage CGImage]

    //                                  orientation:(ALAssetOrientation)[savedImage imageOrientation]

    //                              completionBlock:completeBlock];

    //    }

}



- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo


{

    

    if(error){

        

        //保存失败

        

        

    }else{

        

        //保存成功

        

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm Tx.Framework是一个用于开发Windows桌面应用程序的框架。它基于WinForms技术,提供了一系列的控件和功能,帮助开发者快速构建富有交互性和美观的用户界面。 WinForm Tx.Framework具有以下特点: 1. 简单易用: WinForm Tx.Framework内置了大量易于使用的控件和组件,开发者可以通过简单的拖拽和设置属性的方式快速构建界面。同时,框架提供了丰富的文档和示例,方便开发者学习和使用。 2. 自定义能力强: WinForm Tx.Framework提供了丰富的定制化选项,开发者可以通过修改样式和设置控件行为来满足不同的设计需求。同时,框架支持通过继承和重写的方式来扩展和定制控件的功能。 3. 跨平台支持: WinForm Tx.Framework支持在Windows操作系统上运行,并且能够兼容不同的版本和分辨率。这使得开发者可以在不同的设备上开发和运行应用程序,同时保持良好的用户体验。 4. 开发效率高: WinForm Tx.Framework提供了一系列的工具和功能,帮助开发者提高开发效率。例如,框架内置了数据绑定功能,可以简化数据与界面的交互。另外,框架还提供了丰富的调试和测试工具,方便开发者进行代码调试和单元测试。 综上所述,WinForm Tx.Framework是一个功能强大且易于使用的框架,为开发者提供了一种快速开发Windows桌面应用程序的方式。无论是初学者还是有经验的开发者,都可以通过WinForm Tx.Framework轻松构建出优秀的用户界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值