无法从MPMediaItemPropertyArtWork获取UIImage

时间:2011-07-07 01:18:09

标签: iphone sdk uiimage ipod mpmediaitem

我有以下代码从MPMediaItemPropertyArtWork获取UIImage以在我的视图中显示coverArt。我从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;

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;

答案 2 :(得分:1)

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

我在这个问题上摸不着头几个小时,因为我的应用程序中的一个视图控制器正在处理这些图片而不是我的UITableViewController。我的代码在两个实例中都看起来完全一样(和你的代码非常相似),除了一件事:

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

SIZE! (很抱歉在Swift中写这个,但你明白了)。这听起来很愚蠢,但MPMediaItemArtwork拒绝给我一个小图片。我确实把它改成了更大的尺寸,如下:

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

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

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

答案 3 :(得分:0)

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

MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];

答案 4 :(得分:0)

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

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

UIImage *image = [artwork imageWithSize:size];
if (image == nil) {
    image = [artwork imageWithSize:artwork.bounds.size];
}