将mp3歌曲图像从png转换为jpg

Posted

技术标签:

【中文标题】将mp3歌曲图像从png转换为jpg【英文标题】:Convert mp3 song image from png to jpg 【发布时间】:2021-02-16 09:22:30 【问题描述】:

我有一组很多歌曲,其中一些在元数据中有png 图像,我需要将这些转换为jpg

我通常知道如何将png 图像转换为jpg,但我目前正在使用eyed3 访问元数据,它返回ImageFrame 对象,我不知道如何操作这些对象。例如,我可以使用

访问图像类型
print(img.mime_type)

返回

image/png

但我不知道如何从这里开始。我非常天真地尝试使用 OpenCV 加载图像,但它不是兼容的格式,或者我没有正确执行。而且无论如何我也不知道如何用新图像更新旧图像!

注意:虽然我目前正在使用eyed3,但如果我能以其他任何方式解决这个问题,那就太好了。

【问题讨论】:

【参考方案1】:

我终于能够解决这个问题,虽然不是很优雅。

第一步是加载图像。出于某种原因,我无法使用 eyed3 完成这项工作,但 TinyTag 完成了这项工作:

from PIL import Image
from tinytag import TinyTag        

tag = TinyTag.get(mp3_path, image=True)
image_data = tag.get_image()
img_bites = io.BytesIO(image_data)
photo = Image.open(im)

然后我操纵它。例如,我们可以调整它的大小并将其保存为jpg。因为我们使用PillowPIL)进行这些操作,所以实际上需要保存图片,最后加载回来获取二进制数据(这个细节大概是过程中需要改进的地方)。

photo = photo.resize((500, 500))  # suppose we want 500 x 500 pixels
rgb_photo = photo.convert("RGB")
rgb_photo.save(temp_file_path, format="JPEG")

因此,最后一步是加载图像并将其设置为元数据。您可以在this answer 中了解有关此步骤的更多详细信息。:

audio_file = eyed3.load(mp3_path)  # this has been loaded before
audio_file.tag.images.set(
        3, open(temp_file_path, "rb").read(), "image/jpeg"
    )
audio_file.tag.save()

【讨论】:

以上是关于将mp3歌曲图像从png转换为jpg的主要内容,如果未能解决你的问题,请参考以下文章

将 .jpg 图像转换为 .png

ImageMagick 不会将 .png 转换为 .jpg

将不同的图片格式(jpg、gif、png等)转换为TIFF格式

如何将 html 地图转换为图像(png 或 jpg )

将 JPG 转换为 PNG 和压缩的问题 | PHP

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