我发现 MPMediaItemArtwork 存在一个一致的问题,即它返回的图稿尺寸与我要求的尺寸不同。
我使用的代码如下
MPMediaItem *representativeItem = [self.representativeItems objectAtIndex:index];
MPMediaItemArtwork *artwork = [representativeItem valueForProperty:MPMediaItemPropertyArtwork];
UIImage *albumCover = [artwork imageWithSize:CGSizeMake(128.0f, 128.0f)];
这按预期工作,除了返回图像的大小始终是 {320.0f, 320.0f}
,即使我特别要求 {128.0f, 128.0f}
code> 并且由于图像的大小是预期大小的两倍以上,它导致了一些内存问题。
有没有其他人目睹过这个特殊问题。你是怎么解决的?
Apple 文档建议这应该像我期望的那样工作,而不是实际情况
最佳答案
我下载了 AddMusic sample source来自 Apple,它也使用 MPMediaItemArtwork 只是为了看看他们是如何处理事情的。
在该项目的 MainViewController.m 文件中,这些行:
// Get the artwork from the current media item, if it has artwork.
MPMediaItemArtwork *artwork = [currentItem valueForProperty: MPMediaItemPropertyArtwork];
// Obtain a UIImage object from the MPMediaItemArtwork object
if (artwork) {
artworkImage = [artwork imageWithSize: CGSizeMake (30, 30)];
}
始终返回比例为 1.0 的尺寸为 55 x 55 的图像。
我想说 MPMediaItemArtwork 不遵守请求的尺寸参数是一个错误,您应该通过 bugreporter.apple.com 提交,尽管 Apple 可能也有借口说“55 x 55”是在 iPad 上显示的最佳尺寸 & iPhone。
对于直接调整 UIImage 大小,我建议使用 Trevor Harman 的“UIImage+Resize”方法,可在此处找到:http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way
一旦你将他的类别扩展添加到你的项目中,你就可以通过这样一个简单的调用来实现你想要的内存节省调整大小:
UIImage *albumCover = [artwork imageWithSize:CGSizeMake(128.0f, 128.0f)];
UIImage *resizedCover = [albumCover resizedImage: CGSizeMake(128.0f, 128.0f) interpolationQuality: kCGInterpolationLow];
关于iphone - MPMediaItemArtwork 返回错误大小的图稿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7667631/