gpt4 book ai didi

ios - 替换 iOS ALAssetsLibrary 中的 ALAsset 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:09:39 26 4
gpt4 key购买 nike

我正在开发一个应用程序来读取图像的地理位置并允许用户修改此信息并将此数据写回。我使用 writeImageDataToSavedPhotosAlbum 函数成功读取数据、操作和写入库。问题是它不是更新原始图像,而是创建一个新图像。

我如何替换或更新该项目?

[...]

NSMutableDictionary *EXIFDictionary = [[[metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary]mutableCopy]autorelease];
NSMutableDictionary *GPSDictionary = [[[metadata objectForKey:(NSString *)kCGImagePropertyGPSDictionary]mutableCopy]autorelease];
NSMutableDictionary *TIFFDictionray = [[[metadata objectForKey:(NSString *)kCGImagePropertyTIFFDictionary]mutableCopy]autorelease];

Byte *buffer = (Byte*)malloc(representation.size);
NSUInteger buffered = [representation getBytes:buffer fromOffset:0.0 length:representation.size error:nil];
NSData *imageData = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES]; //this is NSData may be what you want

if(!EXIFDictionary) {
//if the image does not have an EXIF dictionary (not all images do), then create one for us to use
EXIFDictionary = [NSMutableDictionary dictionary];
}
if(!GPSDictionary) {
GPSDictionary = [NSMutableDictionary dictionary];
}
if(!TIFFDictionray) {
TIFFDictionray = [NSMutableDictionary dictionary];
}


[TIFFDictionray setObject:@"This should be the image description" forKey:(NSString*)kCGImagePropertyTIFFImageDescription];
[EXIFDictionary setObject:@"This should be the user comment" forKey:(NSString*)kCGImagePropertyExifUserComment];

[metadataAsMutable setObject:TIFFDictionray forKey:(NSString*)kCGImagePropertyTIFFDictionary];
[metadataAsMutable setObject:EXIFDictionary forKey:(NSString*)kCGImagePropertyExifDictionary];

__block NSDate *date = [[NSDate date] retain];

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

[library writeImageDataToSavedPhotosAlbum:imageData metadata:metadataAsMutable completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Saving Time: %g", [[NSDate date] timeIntervalSinceDate:date]);
[date release];
}];

[...]

提前致谢

最佳答案

您只能更改您的应用创建的照片(请参阅有关 ALAsseteditable 属性的文档)。为此,请在表示照片的 ALAsset 上调用 setImageData:metadata:completionBlock:

还有一个 writeModifiedImageDataToSavedPhotosAlbum:metadata:completionBlock: 方法,但它总是创建一个新 Assets ,该 Assets 被认为是原始 Assets 的修改版本(我不确定如何使用该信息).

关于ios - 替换 iOS ALAssetsLibrary 中的 ALAsset 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com