首页 > 编程知识 正文

javabmp像格式转jpg,tif格式转换jpg

时间:2023-05-03 07:41:42 阅读:221412 作者:4362

笔者是一个材料学的研究生,经常做扫描(SEM)时脑袋短路,图片格式存成tif,到拷贝数据时才发现:怎么数据这么大?回来处理图像时又傻傻的将tif 转 jpg,很是苦恼。在此提醒坑友们:做实验时候要细心呀,不要刷微博、听音乐 [手动狗头续命 × 3]

TIF 图像和 jpg 图像的区别

TIF 是Tag Image Format 的简写,中文翻译过来叫标签图像文件格式(感觉有点奇怪)。是一种灵活的位图格式(什么是位图呢?),主要用来存储图片和艺术图在内的图像。优点在于:对图像信息的存放灵活,可支持很多色彩系统(什么是色彩系统呢?),独立于操作系统,但图像格式复杂,占用存储空间大。
JPEG 全称是 Joint Photographic Experts Group,中文以作联合照片专家组(就感觉不是一个格式名!),日常大家就叫 jpg 格式。jpg格式图像最大的特点就是:压缩技术十分先进,去除了冗余的图像和彩色数据,在不影响图片效果的前提下仅占用很小的存储空间,很适合网络传播(减少带宽压力)。
总结一下:TIF 格式图像信息全,因而占用空间大,jpg格式图像经过压缩,图像数据信息相对减少,占用空间小便于传播。(这么看,试验图像存 TIF 才是王道啊,下次和实验员说道说道 )

Python 实现 TIF 图像转 jpg

图片格式转换的工具很多啊,但是现在网络上的软件谁敢随便装,动不动来个全家桶,之后就是满屏一刀999的渣渣辉,还动不动跳出几张不可名状的Y图,不敢装软件才是说不出的痛啊!
再说我要的很简单,一个小工具而已,话不多说,先上代码。

import cv2.cv2 as cvimport ospath = os.getcwd() # 获取代码所在目录tif_list = [x for x in os.listdir(path) if x.endswith(".tif")] # 获取目录中所有tif格式图像列表for num,i in enumerate(tif_list): # 遍历列表 img = cv.imread(i,-1) # 读取列表中的tif图像 cv.imwrite(i.split('.')[0]+".jpg",img) # tif 格式转 jpg 并按原名称命名

就这么几行代码?对,真的这么简单,但我也是学了有段时间的,这里解释一下吧

需要的两个库 cv2 就是有名的 图像处理库 OpenCV,想当初刚开始学的时候用下面这行代码就总是犯错 import cv2 as cv

这是因为Pycharm 中包库的打包方式不同,cv2是大包名,需要调用包内cv2这个子包才可以,也就是下面这行代码,才能正确运行

import cv2.cv2 as cv

cv.imread(i,-1),这里的参数-1是什么意思?

IMREAD_UNCHANGED = -1 #不进行转化,比如保存为16位的图片,读取出来仍然为16位。
IMREAD_GRAYSCALE = 0 #进行转化为灰度图,比如保存为16位的图片,读取出来为8位,类型为CV_8UC1。
IMREAD_COLOR = 1 #进行转化为RGB三通道图像,图像深度转为8位
IMREAD_ANYDEPTH = 2 #保持图像深度不变,进行转化为灰度图。
IMREAD_ANYCOLOR = 4 #若图像通道数小于等于3,则保持原通道数不变;若通道数大于3,则只取取前三个通道,图像深度转为8位。

os 库是系统函数库,可以通过它访问系统文件夹、数据等等,用得好非常方便 存在的问题及思考

问题是解决了,但实操过程通过 os.getcwd() 的方式获得当前目录,就意味着:你必须将待转化的tif图像与脚本代码放在同一目录下,这样代码才能正确执行,要是图片在其他位置怎么办呢?这里存在一个文档读取不方便的问题。

参考文档

TIF与jpg的区别:https://zhuanlan.zhihu.com/p/80941308
格式转换:https://blog.csdn.net/zsc201825/article/details/89358802
os 库: https://www.runoob.com/python/os-listdir.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。