微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 MP3 音频数据中提取图像作品为 PNG

如何解决从 MP3 音频数据中提取图像作品为 PNG

我有一张 JPEG 格式的图片。我需要将此数据分配为 png 的 UIImageView。如何使用

将数据转换为PNG

.pngData()

我的透明图片显示为白色背景,因为它以 JPEG 格式出现,但我需要它以 PNG 格式出现。

@IBOutlet weak var mainCenterIcon: UIImageView!

for item in MetadataList {

            guard let key = item.commonKey?.rawValue,let value = item.value else{
                continue
            }

           switch key {
           case "artwork" where value is Data :
            mainCenterIcon.image? = UIImage(data: value as! Data)
            default:
              continue
           }
        }

解决方法

如果您需要将艺术品数据从 JPEG 转换为 PNG,您只需要初始化一个 UIImage 对象并获取其 png 数据表示。 AFAIK 无法为 JPEG 图像添加透明背景。无论如何,这就是我将 JPEG 数据转换为 PNG 数据的方式:

import MediaPlayer

extension Collection where Element == AVMetadataItem {
    var artwork: UIImage? {
        first { $0.commonKey == .commonKeyArtwork }?.dataValue?.image
    }
}

extension Data {
    var image: UIImage? { UIImage(data: self) }
}

extension AVPlayerItem {
    var artwork: UIImage? { asset.metadata.artwork }
}

extension URL {
    var playerItem: AVPlayerItem { .init(url: self) }
}

let url = Bundle.main.url(forResource: "songName",withExtension: "mp3")!
url.playerItem.artwork // w 600 h 600
if let pngData = url.playerItem.artwork?.pngData() {
    pngData  // 605082 bytes
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。