使用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安装Anaconda的方法推荐

    保留已有python安装Anaconda的方法推荐

    在安装Anaconda之前,有的已经安装过一个Python版本了,但是又不想删除这个Python版本,该怎么办呢??这篇文章主要给大家介绍了关于保留已有python安装Anaconda的几种法推荐,需要的朋友可以参考下
    2023-12-12
  • Python判断某个用户对某个文件的权限

    Python判断某个用户对某个文件的权限

    这篇文章主要为大家详细介绍了Python如何判断某个用户对某个文件的权限,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Python:合并两个numpy矩阵的实现

    Python:合并两个numpy矩阵的实现

    今天小编就为大家分享一篇Python:合并两个numpy矩阵的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 在Windows中安装Spire.XLS for Python的操作指南

    在Windows中安装Spire.XLS for Python的操作指南

    Spire.XLS for Python 是一款专业的 Python Excel 库,可用于在各种 Python 应用程序中读取、创建、编辑和转换 Excel (.xls & .xlsx) 文件,本文将介绍如何在 Windows 中安装 Spire.XLS for Python,需要的朋友可以参考下
    2025-02-02
  • python有几个版本

    python有几个版本

    在本篇内容里小编给大家分享的是关于python版本的相关知识点内容,需要的朋友们可以学习下。
    2020-06-06
  • python列表去重的二种方法

    python列表去重的二种方法

    这篇文章主要介绍了python列表去重的二种方法,第二种方法无法保持原有顺序,需要的朋友可以参考下
    2014-02-02
  • Python进阶之import导入机制原理详解

    Python进阶之import导入机制原理详解

    在Python中,一个.py文件代表一个Module。在Module中可以是任何的符合Python文件格式的Python脚本。了解Module导入机制大有用处。快跟随小编一起学习一下吧
    2022-11-11
  • 教你使用python做一个“罚点球”小游戏

    教你使用python做一个“罚点球”小游戏

    这篇文章主要介绍了用python做一个“罚点球”小游戏,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 在Python中使用base64模块处理字符编码的教程

    在Python中使用base64模块处理字符编码的教程

    这篇文章主要介绍了在Python中使用base64模块处理字符编码的教程,示例代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • 详解PyQt5中Thread多线程的使用

    详解PyQt5中Thread多线程的使用

    QThread是Qt线程类中最核心的底层类,这篇文章主要为大家介绍了PyQt5中Thread多线程的具体使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08

最新评论