gpt4 book ai didi

iphone - 从 ID3 标签获取专辑插图/将函数从 Java 转换为 Objective-C

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:13 24 4
gpt4 key购买 nike

我有以下问题要问:

如何使用 iOS 应用程序编译 taglib?

我有点困惑,因为我将文件夹添加到我的项目中,试图编译它,但它失败并出现 1640 错误。

我如何让它成功编译 - 我问的原因是 taglib 允许从标签中提取专辑封面。

如果有人知道基于 Objective-C 的专辑插图提取类,那将会有所帮助——我不知道为什么 Apple 不在 Core Foundation 中添加这样做的方法——因为有从中提取一些数据的方法一个 ID3 标签。

我不明白为什么没有一些 Objective-C 方法来做到这一点。

感谢任何帮助。

编辑:

经过几个小时的尝试,我找到了一个 Java 函数 here这似乎很好地完成了工作,但我还没有关于如何将其转换为 Objective-C(或更不用说 C++)的线索,因为它的类型似乎完全不同来自 Objective-C/C++ 中的那些。

如果有人知道转换它的方法,它真的会有所帮助,因为这似乎是我最后的选择,因为我已经尝试了很多其他方法。

最佳答案

- (void)loadArtworksForFileAtPath:(NSString *)path completion:(void (^)(NSArray *))completion
{
NSURL *u = [NSURL fileURLWithPath:path];
AVURLAsset *a = [AVURLAsset URLAssetWithURL:u options:nil];
NSArray *k = [NSArray arrayWithObjects:@"commonMetadata", nil];

[a loadValuesAsynchronouslyForKeys:k completionHandler: ^{
NSArray *artworks = [AVMetadataItem metadataItemsFromArray:a.commonMetadata
withKey:AVMetadataCommonKeyArtwork keySpace:AVMetadataKeySpaceCommon];

NSMutableArray *artworkImages = [NSMutableArray array];
for (AVMetadataItem *i in artworks)
{
NSString *keySpace = i.keySpace;
UIImage *im = nil;

if ([keySpace isEqualToString:AVMetadataKeySpaceID3])
{
NSDictionary *d = [i.value copyWithZone:nil];
im = [UIImage imageWithData:[d objectForKey:@"data"]];
}
else if ([keySpace isEqualToString:AVMetadataKeySpaceiTunes])
im = [UIImage imageWithData:[i.value copyWithZone:nil]];

if (im)
[artworkImages addObject:im];
}

completion(artworkImages);
}];
}

关于iphone - 从 ID3 标签获取专辑插图/将函数从 Java 转换为 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6607401/

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