Catalog
  1. 1. Python #MATLAB #origin #colormap
Python生成Origin或者MATLAB的Pal格式的颜色图文件

Python #MATLAB #origin #colormap

Python的颜色图( colormaps)非常多而且非常好看,在用Origin或者MATLAB的时候自己也想用Python的颜色图,因此写了这样一个程序。其中用Python生成MATLAB程序已经在另外一篇博客介绍过了[Software&Program/MATLAB/C_教程_MATLAB如何自定义颜色曲线],网络链接为MATLAB如何自定义颜色曲线

而Python生成Origin的Pal文件则需要保存为二进制数据,并且得有一些头文件的信息输出。我参考了MATLAB的一个函数cmap2pal
这里面最关键的输出二进制文件的操作为:

1
%% Open file
2
fid=fopen(path,'w',mf);
3
if(fid<0)
4
    throw(MException('cmap2pal:Open','Error opening file (%s) for writing',path));
5
end
6
7
%% Write RIFF signature
8
fwrite(fid,'RIFF','uint8',0,mf);
9
10
%% Write file length
11
fwrite(fid,flen-8,'uint32',0,mf);                               % 8 byte header (RIFF header)
12
13
%% Write PAL signature
14
fwrite(fid,'PAL ','uint8',0,mf);
15
16
%% Write data signature
17
fwrite(fid,'data','uint8',0,mf);
18
19
%% Write data block size
20
fwrite(fid,flen-20,'uint32',0,mf);                              % 20 byte header (RIFF + Chunk)
21
22
%% Write version number
23
fwrite(fid,[0,3],'uint8',0,mf);                                 % Always 3
24
25
%% Write palette length
26
fwrite(fid,depth,'uint16',0,mf);
27
28
%% Write palette data
29
fwrite(fid,[cmap.*255,zeros(depth,1)]','uint8',0,mf);           % RGBA tuples
30
31
%% Close file
32
fclose(fid);

Python为了生成二进制文件,需要借助包struct
里面关于数据的输出格式是这样的

而对应的MATLAB格式

通过在StackOverflow知道了正确的代码书写方式,我还写了一个图形界面版本,

代码详情可见我的github地址:
# pycmap2palormat

Author: Knifelee
Link: https://knifelees3.github.io/2021/07/24/C_%E6%95%99%E7%A8%8B_Python%E7%94%9F%E6%88%90Origin%E6%88%96%E8%80%85MATLAB%E6%89%80%E9%9C%80%E9%A2%9C%E8%89%B2%E5%9B%BE%E6%96%87%E4%BB%B6/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶

Comment