请教图片格式转换
最近在做个功能,自动往excel中插入图片,用的库是xlwt,尝试了几种图片格式,jpg,pn,gif,jpeg,bmp,只能插入bmp类型的图片, 插其他格式就报错:Exception: bitmap doesn't appear to to be a valid bitmap image.
在网上看了下图片转换,能在图片之间转换,原图片格式是jpeg,分辨率是1024X600,大小 21k,转换成bmp,分辨率没变,但大小变成了1M多,尝试用img.resize((512,128),Image.BILINEAR)文件分辨率和大小也没没变化,这个影响图片插入速度,也使得excel文件变得很大。
请教大家有没有什么好的办法?谢谢~~
[解决办法]
除非能解决插入jpg,否则没什么可做的
普及:
jpg是压缩算法图片,bmp理论上是raw图片
bmp你大约可以计算 长*宽*3=1843200 (3是RGB三色各占一个字节),外加少量分隔字符和文件头就是总字节数,其他raw(非bmp)情况就把3调节,如CMYK就是4,RGB+透明也是4……
jpg字节数大约是raw的1/6 (尺寸相同情况下),质量最高那种,低质量可以更少字节数
题外:动态影像的raw也可以类似计算——长*宽*3*帧数,就是每秒的字节数,你算一下就知道是天文数字,目前的机器都很难处理,所以基本上可播放视频都是用各自算法压缩的
注意:数码相机照片的raw并非真实的raw,据我所知,数码相机还未达到24bit(我的知识截止去年初)
[解决办法]
xlwt文档说们了只支持24bit的bmp, XlsxWriter支持多点png,jpeg,例子
from xlsxwriter.workbook import Workbook
# Create an new Excel file and add a worksheet.
workbook = Workbook('images.xlsx')
worksheet = workbook.add_worksheet()
# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 30)
# Insert an image.
worksheet.write('A2', 'Insert an image in a cell:')
worksheet.insert_image('B2', 'python.png')
workbook.close()