将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
。因为我们使用Pillow
(PIL
)进行这些操作,所以实际上需要保存图片,最后加载回来获取二进制数据(这个细节大概是过程中需要改进的地方)。
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的主要内容,如果未能解决你的问题,请参考以下文章