4

我有以下代码从 MPMediaItemPropertyArtWork 获取 UIImage 以在我的视图中显示封面艺术。我从 mediaItem 获得了一个非 NULL 图稿,但是,当我尝试从图稿中提取 UIImage 时,它​​返回 NULL 并且我在 UIImageView 中看不到任何内容。任何帮助将不胜感激。

CGSize artworkSize = CGSizeMake(30, 30);
UIImage *artworkImage;
MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];
if (artwork) {
    NSLog(@"artwork available");
    artworkImage = [artwork imageWithSize:artworkSize];
} else {
    NSLog(@"artwork not available");
    artworkImage = [UIImage imageNamed:@"EmptyAlbum.png"];
}

NSLog(@"artworkImage = %@", artworkImage);

coverArtView.image = artworkImage;
4

5 回答 5

3

试试这个 - 使用 UItableview 来显示专辑详细信息。

声明 MPMediaItemCollection *userMediaCollection;

 -(void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {

[self setUserMediaCollection:mediaItemCollection];

[self dismissModalViewControllerAnimated:YES];

  }


MPMediaItem *mItem = (MPMediaItem *)[userMediaCollection.items  objectAtIndex:indexPath.row];

    MPMediaItemArtwork *artWork = [mItem valueForProperty:MPMediaItemPropertyArtwork];

    cell.imageView.image = [artWork imageWithSize:CGSizeMake(30, 30)];

其中 userMediaCollection 是您的 MPMediaItemCollection

于 2011-07-26T14:03:13.863 回答
1

试试这个......这是工作。

CGSize artworkSize = CGSizeMake(30, 30);
UIImage *artworkImage;
MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];
artworkImage = [artwork imageWithSize:artworkSize];

if (artworkImage == nil) {
  NSLog(@"artwork not available");
  artworkImage = [UIImage imageNamed:@"EmptyAlbum.png"];
}

coverArtView.image = artworkImage;
于 2014-07-20T15:40:15.000 回答
1

我知道这个问题现在有点老了,但对于任何发现这个问题的人来说,这可能会有所帮助:

我为此苦苦思索了几个小时,因为获取艺术品是在我的应用程序的一个视图控制器中工作,而不是在我的 UITableViewController 中。我的代码在两种情况下看起来都完全相同(并且与您的非常相似),除了一件事情:

let albumArtImage = albumArt.imageWithSize(cell.imageView.bounds.size)

规模!(很抱歉用 Swift 写这个,但你明白了)。这听起来很愚蠢,但 MPMediaItemArtwork 拒绝给我一个小图像。我实际上只是将其更改为更大的尺寸,如下所示:

let albumArtImage = albumArt.imageWithSize(CGSize(width: 150, height: 150))

它奏效了。无论如何,您都可以调整 UIImage 的大小以满足您的需求。

如果有人发现这个并且这个(愚蠢的)解决方案有效,请通过回复或其他方式告诉我。

于 2014-08-08T12:31:03.900 回答
0

你如何初始化你的 MPMusicPlayerController?它应该是:

MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];
于 2012-01-05T17:18:30.190 回答
0

见答案:https ://stackoverflow.com/a/26463261/883413

似乎是一个iOS错误。如果返回的图像为零,请尝试使用原图尺寸。

UIImage *image = [artwork imageWithSize:size];
if (image == nil) {
    image = [artwork imageWithSize:artwork.bounds.size];
}
于 2016-03-02T09:26:41.370 回答