使用Matplotlib将图片保存为.tiff格式

 更新时间:2023年09月14日 14:52:16   作者:datamonday  
这篇文章主要介绍了使用Matplotlib将图片保存为.tiff格式问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Matplotlib将图片保存为.tiff格式

sci论文为防止图片失真,最好提交 tiff 格式(位图)或者其它类型的矢量图。

因为经常用matplotlib绘图,于是可以按照以下方法将图片保存为 tiff 格式,之后使用PS进行压缩。

主要用到了io和PIL模块,流程是先保存为png格式,在后再加载,通过PIL保存为 tiff 格式。

举个简单的例子

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import io
from PIL import Image
custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
                Line2D([0], [0], color=cmap(.5), lw=4),
                Line2D([0], [0], color=cmap(1.), lw=4)]
N = 10
data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)]
data = np.array(data).T
fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])
# Save the image in memory in PNG format
png1 = io.BytesIO()
plt.savefig(png1, format="png", dpi=500, pad_inches = .1, bbox_inches = 'tight')
# Load this image into PIL
png2 = Image.open(png1)
# Save as TIFF
png2.save("ap_qt_ad.tiff")
png1.close()

示例结果:

python图像处理之tiff文件的保存与解析

tiff文件是一种常用的图像文件格式,支持将多幅图像保存到一个文件中,极大得方便了图像的保存和处理。

python中支持tiff文件处理的是libtiff模块中的TIFF类(libtiff下载链接https://pypi.python.org/pypi/libtiff/)。

这里主要介绍tiff文件的解析和保存,

具体见如下代码:

from libtiff import TIFF
from scipy import misc
##tiff文件解析成图像序列
##tiff_image_name: tiff文件名;
##out_folder:保存图像序列的文件夹
##out_type:保存图像的类型,如.jpg、.png、.bmp等
def tiff_to_image_array(tiff_image_name, out_folder, out_type): 
    tif = TIFF.open(tiff_image_name, mode = "r")
    idx = 0
    for im in list(tif.iter_images()):
        #
        im_name = out_folder + str(idx) + out_type
        misc.imsave(im_name, im)
        print im_name, 'successfully saved!!!'
        idx = idx + 1
    return
##图像序列保存成tiff文件
##image_dir:图像序列所在文件夹
##file_name:要保存的tiff文件名
##image_type:图像序列的类型
##image_num:要保存的图像数目
def image_array_to_tiff(image_dir, file_name, image_type, image_num):
    out_tiff = TIFF.open(file_name, mode = 'w')
    #这里假定图像名按序号排列
    for i in range(0, image_num):
        image_name = image_dir + str(i) + image_type
        image_array = Image.open(image_name)
        #缩放成统一尺寸
        img = image_array.resize((480, 480), Image.ANTIALIAS)
        out_tiff.write_image(img, compression = None, write_rgb = True)
    out_tiff.close()
    return 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python IDE PyCharm的基本快捷键和配置简介

    Python IDE PyCharm的基本快捷键和配置简介

    这篇文章主要介绍了Python IDE PyCharm的基本快捷键和配置简介,PyCharm为一个收费的软件,需要的朋友可以参考下
    2015-11-11
  • Python SQLAlchemy简介及基本用法

    Python SQLAlchemy简介及基本用法

    SQLAlchemy是一个基于Python实现的ORM对象关系映射框架,该框架建立在DB API之上,使用关系对象映射进行数据库操作,这篇文章主要介绍了SQLAlchemy简介以及基本使用,需要的朋友可以参考下
    2023-08-08
  • Python利用PyVista进行mesh的色彩映射的实现

    Python利用PyVista进行mesh的色彩映射的实现

    这篇文章主要介绍了Python利用PyVista进行mesh的色彩映射的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python的“二维”字典 (two-dimension dictionary)定义与实现方法

    Python的“二维”字典 (two-dimension dictionary)定义与实现方法

    这篇文章主要介绍了Python的“二维”字典 (two-dimension dictionary)定义与实现方法,结合实例形式分析了Python模拟实现类似二维数组形式的二维字典功能,需要的朋友可以参考下
    2016-04-04
  • Python实现CNN的多通道输入实例

    Python实现CNN的多通道输入实例

    今天小编就为大家分享一篇Python实现CNN的多通道输入实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 分享一下如何编写高效且优雅的 Python 代码

    分享一下如何编写高效且优雅的 Python 代码

    这篇文章主要介绍了分享一下如何编写高效且优雅的 Python 代码,需要的朋友可以参考下
    2017-09-09
  • 详解python函数传参传递dict/list/set等类型的问题

    详解python函数传参传递dict/list/set等类型的问题

    这篇文章主要介绍了详解python函数传参传递dict/list/set等类型的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python redis 删除key脚本的实例

    python redis 删除key脚本的实例

    今天小编就为大家分享一篇python redis 删除key脚本的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Idea安装python显示无SDK问题解决方案

    Idea安装python显示无SDK问题解决方案

    这篇文章主要介绍了Idea安装python显示无SDK问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python中获取图片的大小问题

    Python中获取图片的大小问题

    这篇文章主要介绍了Python中获取图片的大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论