从 MP3 音频数据中提取图像图稿为 PNG
Extract Image artwork from MP3 audio data as 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 数据表示。据我所知,无法为 JPEG 图像添加透明背景。无论如何,这就是我将 JPEG 数据转换为 PNG 数据的方式:
import MediaPlayer
extension Collection where Element == AVMetadataItem {
var artwork: UIImage? {
first { [=10=].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
}
我有一张 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 数据表示。据我所知,无法为 JPEG 图像添加透明背景。无论如何,这就是我将 JPEG 数据转换为 PNG 数据的方式:
import MediaPlayer
extension Collection where Element == AVMetadataItem {
var artwork: UIImage? {
first { [=10=].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
}