使用Matplotlib將圖片保存為.tiff格式
Matplotlib將圖片保存為.tiff格式
sci論文為防止圖片失真,最好提交 tiff 格式(位圖)或者其它類型的矢量圖。
因為經(jīng)常用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:要保存的圖像數(shù)目 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) ?? ??? ?#縮放成統(tǒng)一尺寸 ? ? ? ? img = image_array.resize((480, 480), Image.ANTIALIAS) ? ? ? ? out_tiff.write_image(img, compression = None, write_rgb = True) ? ? out_tiff.close() ? ? return?
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python利用PyVista進行mesh的色彩映射的實現(xiàn)
這篇文章主要介紹了Python利用PyVista進行mesh的色彩映射的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Python的“二維”字典 (two-dimension dictionary)定義與實現(xiàn)方法
這篇文章主要介紹了Python的“二維”字典 (two-dimension dictionary)定義與實現(xiàn)方法,結合實例形式分析了Python模擬實現(xiàn)類似二維數(shù)組形式的二維字典功能,需要的朋友可以參考下2016-04-04詳解python函數(shù)傳參傳遞dict/list/set等類型的問題
這篇文章主要介紹了詳解python函數(shù)傳參傳遞dict/list/set等類型的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04