常用图像格式以及转换后的优缺点、图像编解码

常用图像格式划分
图片格式大致范围:位图、矢量图(可无损缩放)、 HDR 高动态范围图(附带光照信息的图像)、平面软件源文件这几种。存储的格式范围:有损压缩、无损压缩。

点阵图,也叫做位图,像素图。构成点阵图的最小单位是象素,位图就是由象素阵列的排列来实现其显示效果的,每个象素有自己的颜色信息,在对位图图像进行编辑操作的时候,可操作的对象是每个象素,我们可以改变图像的色相、饱和度、明度,从而改变图像的显示效果。
矢量图,也叫做向量图。矢量图并不纪录画面上每一点的信息,而是纪录了元素形状及颜色的算法。即使对画面进行倍数相当大的缩放,其显示效果仍然相同(不失真)。

图像类别:
1、.jpg/.jpeg
JPG图像是有损压缩的(不可逆),压缩过程中会丢弃一些细节和信息以减小文件大小,对图像质量有影响。较小的JPG文件可能需要更多的计算资源和时间来解码和显示图像,这可能导致读取速度变慢。(jpeg是jpg的扩展名)

2、.bmp
BMP(Window标准位图)是最普遍的点阵图格式之一,也是Window系统下的标准格式,是将Window下显示的点阵图以无损形式保存的文件,其优点是不会降低图片的质量,但文件大小比较大。(BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。)

3、.png
PNG包括PNG-8和真色彩PNG(PNG-24和PNG-32),支持alpha透明,也就是我们常说的透明底,支持全透明,半透明,全不透明,支持无损压缩,多次重复保存而不降低图像质量。(采用LZ77算法的派生算法进行压缩,其结果是获得高的压缩比,不损失数据)内存占比较大

4、.gif
采用LZW压缩算法进行编码。是无损的、采用索引色的、点阵图。其优点:文件小、支持动画以及透明,适合应用于对色彩要求不高同时需要文件体积较小的场景,比如企业Logo、线框类的图等。

图像处理过程中的耗时问题

在进行图像算法处理图像时,如:
c++调用python算法阶段,将输入的图像转换为mat,再使用PyArray_SimpleNewFromData把mat数据转换为numpy数组对象的过程中,无损形式图像和有损压缩后的jpg图像,在这个阶段会出现速度耗时不同的问题。
即使你的bmp图像的25Mb,压缩为1Mb的jpg图像,位深度、size都保持一样。但是图像解码耗时是不一样的,使用无损图像耗时更少。

图像编解码

经常使用的方法是基于base64模块来实现原始图像数据的编码处理,收到传输编码后的数据流后,对原始数据进行解码还原。

图像编解码demo:

import base64
# 将图像文件编码为 Base64,并把数据流保存到txt文件
with open("image.png", "rb") as image_file:
    encoded_image = base64.b64encode(image_file.read())
with open("encoded_image.txt", "wb") as encoded_file:
    encoded_file.write(encoded_image)

# 读取txt里的数据流,并将 Base64 编码的字符串解码为图像文件
with open("encoded_image.txt", "rb") as encoded_file:
    encoded_image = encoded_file.read()
image_data = base64.b64decode(encoded_image)
with open("decoded_image.png", "wb") as image_file:
    image_file.write(image_data)

图像编解码保存图像,数据损失demo:

data=base64.b64encode(open("4TZD.jpg", "rb").read())
imgdata=base64.b64decode(data)
# 第一种保存方法:图像数据、质量有损
with open('demo.png','w') as f:
	f.write(imgdata)
#第二种保存文件方法,无损
image=io.BytesIO(imgdata)
img=Image.open(image)
img.save('demo1.png')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值