- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 ALAsset 框架将图像从照片库保存到带有元数据的文档目录中。我使用的代码是
ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];
[library assetForURL:[NSURL URLWithString:miv.assetURL] resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *image_representation = [asset defaultRepresentation];
CGImageSourceRef source = Nil;
uint8_t *buffer = (Byte*)malloc(image_representation.size);
NSUInteger length = [image_representation getBytes:buffer fromOffset: 0.0 length:image_representation.size error:nil];
if (length != 0) {
NSData *adata = [[NSData alloc] initWithBytesNoCopy:buffer length:image_representation.size freeWhenDone:YES];
NSDictionary* sourceOptionsDict = [NSDictionary dictionaryWithObjectsAndKeys:(id)[image_representation UTI] ,kCGImageSourceTypeIdentifierHint,nil];
// create CGImageSource with NSData
source = CGImageSourceCreateWithData((__bridge CFDataRef) adata, (__bridge CFDictionaryRef) sourceOptionsDict);
}
NSDictionary *metadata = [image_representation metadata];
NSMutableDictionary *metadataAsMutable = [metadata mutableCopy];
NSMutableDictionary *EXIFDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyExifDictionary];
NSMutableDictionary *GPSDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyGPSDictionary];
if(!EXIFDictionary) {
EXIFDictionary = [NSMutableDictionary dictionary];
}
if(!GPSDictionary) {
GPSDictionary = [NSMutableDictionary dictionary];
}
[metadataAsMutable setObject:EXIFDictionary forKey:(NSString *)kCGImagePropertyExifDictionary];
[metadataAsMutable setObject:GPSDictionary forKey:(NSString *)kCGImagePropertyGPSDictionary];
CFStringRef UTI = CGImageSourceGetType(source);
NSMutableData *dest_data = [NSMutableData data];
CGImageDestinationRef destination CGImageDestinationCreateWithData((__bridge CFMutableDataRef)dest_data,UTI,1,NULL);
CGImageDestinationAddImageFromSource(destination,source,0, (__bridge CFDictionaryRef) metadataAsMutable);
BOOL success = NO;
success = CGImageDestinationFinalize(destination);
if(!success) {
}
[dest_data writeToFile:myImageFileName atomically:YES];
CFRelease(destination);
CFRelease(source);
}];
我想将此代码转换为使用 Photo Kit。根据我的研究,我发现 Photo kit 处理写入的方式是
PHFetchResult *savedAssets = [PHAsset fetchAssetsWithLocalIdentifiers:[NSArray arrayWithObjects:imageURLString, nil] options:nil];
[savedAssets enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
[[PHImageManager defaultManager]
requestImageForAsset:(PHAsset *)asset
targetSize:desiredSize
contentMode:PHImageContentModeAspectFit
options:Nil
resultHandler:^(UIImage *result, NSDictionary *info) {
// Write Here
// The info here has no EXIF or Metadata. So get them
PHContentEditingInputRequestOptions *editOptions =
[[PHContentEditingInputRequestOptions alloc]init];
editOptions.networkAccessAllowed = YES;
[asset requestContentEditingInputWithOptions:editOptions completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
CIImage *image = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL];
NSLog(@"metadata: %@", image.properties.description);
?? How do I write this to doc folder ?
}];
}
}
最佳答案
经过一番研究,我明白了。以下是使用 Exif 将图像保存到文档目录的方法。
PHFetchResult *savedAssets = [PHAsset fetchAssetsWithLocalIdentifiers:[NSArray arrayWithObjects:myAssetURL, nil] options:nil];
[savedAssets enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
PHImageRequestOptions *cropToSquare = [[PHImageRequestOptions alloc] init];
cropToSquare.synchronous = YES;
[[PHImageManager defaultManager] requestImageDataForAsset:asset
options:cropToSquare
resultHandler:
^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
CIImage* ciImage = [CIImage imageWithData:imageData];
NSMutableDictionary *metadataAsMutable = [ciImage.properties mutableCopy];
CGImageSourceRef source = Nil;
NSDictionary* sourceOptionsDict = [NSDictionary dictionaryWithObjectsAndKeys:dataUTI ,kCGImageSourceTypeIdentifierHint,nil];
source = CGImageSourceCreateWithData((__bridge CFDataRef) imageData, (__bridge CFDictionaryRef) sourceOptionsDict);
CFStringRef UTI = CGImageSourceGetType(source);
NSMutableData *dest_data = [NSMutableData data];
CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)dest_data,UTI,1,NULL);
CGImageDestinationAddImageFromSource(destination,source,0, (__bridge CFDictionaryRef) metadataAsMutable);
BOOL success = NO;
success = CGImageDestinationFinalize(destination);
if(!success) {
}
[dest_data writeToFile:myTrumbImageFileName atomically:YES];
CFRelease(destination);
CFRelease(source);
}];
}];
关于ios - 使用 Photokit 编写带有元数据的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32102037/
我是 iOS 8 的新手,我想使用 photoKit 编辑输入图像,例如模糊、旋转、颜色变化、创建渐变等。我已经搜索过,没有教程,所以请分享详细的想法。提前致谢。 最佳答案 浏览解释照片框架的 WWD
有什么方法可以保留用户在“照片”应用中排列所有相册的列表顺序?我一整天都在尝试解决这个问题,但我似乎无法弄清楚我缺少什么来保留在我的应用程序中显示的顺序。 我想保留顺序,因为用户可以在照片应用中重新排
我第一次开始尝试 macOS 开发。我正在尝试查询我在 macOS 照片应用程序中创建的智能相册列表。正如您在此屏幕截图中看到的,我定义了 18 个智能相册和 1 个常规相册。 但是,当我获取智能相册
我第一次开始尝试 macOS 开发。我正在尝试查询我在 macOS 照片应用程序中创建的智能相册列表。正如您在此屏幕截图中看到的,我定义了 18 个智能相册和 1 个常规相册。 但是,当我获取智能相册
我正在使用 PhotoKit 来获取其中一个系统相册中的照片,如下所示: PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; f
我了解如何使用 Apple 的 PhotoKit API 以编程方式创建文件夹并将照片添加到该文件夹。 PHPhotoLibrary.shared().performChanges({
我正在使用 iOS 8 和新的 PhotoKit 开发一个 iOS 应用程序,我遍历用户图像并试图通过代码找出图像是垂直的还是水平的? Assets 上有我可以检查的标志吗? 最佳答案 您可以使用 r
我目前正在使用 ALAsset 框架将图像从照片库保存到带有元数据的文档目录中。我使用的代码是 ALAssetsLibrary *library = [[[ALAssetsLibrary alloc]
我可以使用 PHFetchResult *results = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil]; 获取在设备
我正在使用 PhotoKit 从系统相册中获取照片并将它们放入 UICollectionView 中。 对于 UICollectionViewCell,我这样设置: cell.imageView.co
以下代码通过 3 个简单步骤突出显示了该问题: 1) 获取时刻 2)缓存时刻localIdentifier 3) 使用标识符获取时刻:失败(在设备上,iOS 8.2) - ( void )moment
我在更新图像的元数据并将其保存回照片库时遇到问题。一切工作除了图像元数据在它被改变之后缺少之前存在的条目并且我在处理图像或执行照片库更改 block 时没有收到任何错误。此外,在将字典写回图像之前,字
我正在尝试使用照片框架重现原生 iOS8 的照片选择器。我在排序时遇到了问题。 假设我执行以下操作: 我在 Camera+ 应用程序中编辑照片并将其保存回图库。 我收藏了另一张照片。 在 native
当我打印 PHAsset 的描述时,它包括 assetSource=3 或 assetSource=0。 我可以知道这是什么吗assetSource 是什么意思?像 3,0 这样的数字与什么有关?根据
我想从视频资源中提取 UIimage,用作海报。根据 PHImageManager 的文档,我应该能够使用 requestImageForAsset:targetSize:contentMode:op
我使用方法(这个问题的结尾)从设备中检索视频。它的作用是在库中找到第一个视频,创建导出 session 并将视频导出到 MOV 文件中。 应用程序运行两次后(在方法运行之间停止应用程序),将比较两个生
我正在开发 iOS 8 应用程序并处理大量照片,我需要唯一标识 PHassets 但找不到任何可用的属性?我找到一处特性在 PHObject/localIdentifier 记录在这里 https:
我正在使用下面的代码来获取图像: [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(8
我在理解如何为 photokit 查询制定文件管理器时遇到了很多麻烦,特别是当您只想检索某些媒体类型时如何制定 NSPredicate。就我而言,我正在尝试检索所有相册(即 PHCollectionA
我是否可以使用从 "PHImageFileURLKey" 返回的路径进入照片库并检索图像? 返回的路径格式如下: "file:///var/mobile/Media/DCIM/102APPLE/IMG
我是一名优秀的程序员,十分优秀!