python画图常见不同图片格式保存方式
作者:没意思不好玩我不玩了
这篇文章主要介绍了python画图常见不同图片格式保存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python画图常见不同图片格式保存
上周讨论老师要我把data生成 tif / tiff 图给他,方便用于编辑成高清矢量图?(原谅我没太仔细听为什么了。。。这该死的瞌睡虫)放进paper,平常都是直接生成pdf,顺便记录一下简单的存图过程。
import matplotlib.pyplot as plt import numpy as np # 生成数据=================================== x = np.arange(0, 1, 0.1) # 横坐标从0到1,步长为0.1 y = np.cos(x) # 纵坐标为 x 对应的 cos(x) 值 # 生成图形=================================== plt.figure(dpi=600)#自己设哈,其实300就够了 plt.plot(x, y) #保存图片=================================== #习惯了,没有理由 plt.savefig('C:/Users/YuJia/Desktop/cos.pdf') #JPG/JPEG是最常见的格式,有损压缩,细节流失,但内存小 plt.savefig('C:/Users/YuJia/Desktop/cos.jpeg') plt.savefig('C:/Users/YuJia/Desktop/cos.jpg') #档案比JPEG大,压缩不失真,能够相容透明/半透明图像 plt.savefig('C:/Users/YuJia/Desktop/cos.png') #可缩放向量图,以向量图形组成,而非像素,不被限制于某种解析度(仿佛无限大哈哈哈没有啦),一般用网页浏览器开启(如Chrome、Firefox、Edge或Internet Explorer) plt.savefig('C:/Users/YuJia/Desktop/cos.svg') #标签图像文件格式,可进行有损或无损压缩 plt.savefig('C:/Users/YuJia/Desktop/cos.tif') plt.savefig('C:/Users/YuJia/Desktop/cos.tiff') # 显示图形=================================== plt.show()
以下是产生的各种图片大小:
稍微看一下,图片大小还跟dpi设置有关,差很多!!!尤其是 tif / tiff 这种,dpi 高的可以有几百MB那么大。
好的,速速讲完,虽然没什么内容,睡觉,同为可爱的画图工具人们。
保存图片的常用方法
1.PIL的保存图片方法
path = r"./001.jpg" #图片路径 img = Image.open(path) #打开图片 img.save("1.jpg") #将图片保存为1.jpg
2.opencv保存图片
path = r"./001.jpg" #图片路径 #img = cv.imdecode(np.fromfile("动漫人物_0.jpg",np.uint8))#含有中文路径的图片打开 img = cv2.imread(path) #读取图片 cv2.imwrite("1.jpg",img) #将图片保存为1.jpg
3.Matplotlib保存图片的方法
import matplotlib.pyplot as plt import cv2 import os images_path = "./minist_img" for i,img_name in enumerate(os.listdir(images_path)): img_path = os.path.join(images_path,img_name) img = cv2.imread(img_path) #numpy的数组形式,色彩空间为BGR img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) # plt.subplot(2,2,i+1),plt.imshow(img) plt.savefig("./minist.jpg") plt.show()
4.pytorch保存图片
save_image(real_img,os.path.join(save_img,f"{epoch}_real.jpg"),nrow=10,padding=2,pad_value=255)
参数:
- tensor:4D张量,形状为(B x C x H x W),分别表示样本数,通道数,图像高度,图像宽度
- nrow:每行的图片数量,默认值为8
- padding:相邻图像之间的间隔。默认值为2
- normalize:如果为True,则把图像的像素值通过range指定的最大值和最小值归一化到0-1。默认为False
- range:元组,用于指定最大值和最小值。默认使用图像像素的最大最小值。
- sacle_each:如果为True,就单独对每张图像进行normalize;如果是False,统一对所有图像进行normalize。默认为Flase
- pad_value:float,上述padding会使得图像之间留出空隙,默认为0
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。