从 MP3 音频数据中提取图像艺术品为 PNG
Posted
技术标签:
【中文标题】从 MP3 音频数据中提取图像艺术品为 PNG【英文标题】:Extract Image artwork from MP3 audio data as PNG 【发布时间】:2021-04-13 17:12:56 【问题描述】:我有一个 JPEG 格式的图像。我需要将此数据分配给 UIImageView 作为 png。如何使用
将数据转换为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
【问题讨论】:
如果您的意图只是获取元数据并初始化 UIImage,您可以查看这篇文章 ***.com/a/30244852/2303865 我需要将数据初始化为png 一旦你有了 UIImage,你就可以得到 pngData 我刚查了一下,图稿数据确实是jpeg图片 是的,这是透明图像的问题。退休时如何转换为PNG。 【参考方案1】:如果您需要将艺术品数据从 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
【讨论】:
以上是关于从 MP3 音频数据中提取图像艺术品为 PNG的主要内容,如果未能解决你的问题,请参考以下文章
使用 youtube-dl 将元数据(艺术家姓名、歌曲名称、年份、专辑、时长、流派)写入 mp3/m4a 音频文件(随后的 AtomicParsely 错误)