-
146
构。例如,每一个重复单元可以包
含
128
个字节的文件头,两个
100
个元素的浮
点型矢量和一个
100*1
00
的整型数组。如果是这样,可以建立一个文件关联变量。键
入:
OpenR, 10,
‘
’
Info = BytArr (128) xvector = FltArr (100)
yvector = FlatArr(100) data = IntArr
(100,100) struct = {header: info, x: xvector, y:
yvector, image: data} repeatingUnit =
Assoc (10, struct)
因为映射到此数据文件相的
变量是一个结构变量,因此在它的引用被删除之前,必须对此结构变量进行临时拷贝。
< br>例如,显示文件第三个重复单元的图像部分,可以键入:
TempVariable =
repearingUnit (2) TvScl,
按照通常的方式,可以用
Free_Lun
或
Close
命令将关联变量和文件之间的联系关闭。如下
:
Free_Lun, lun Close, 10
文件格式
读此类文件的
IDL
程序
写此类文件
的
IDL
程序
BMP
Read_BMP
Write_BMP CDF
参考
CDF
库
参考
CDF
库
DICOM IDLffDICOM
对象
IDLffDICOM
对
象
DXF
IDLffDXF
对象
IDLffDXF
对象
GIF Read_GIF
Write_GIF HDF
参考
HDF
库
参
考
HDF
库
HDF-EOS
参考
HDF
库
参考
HDF
库
Interfile Read_Interfile
无
JPEG
Read_JPEG Write_JPEG netCDF
参考
netCDF
库
参考
netCDF
库
< br> PICT Read_PICT
Write_PICT PBM/PPM
Read_PPM Write_PPM PNG Read_PNG Write_PNG
PostScript
无
PS
或打印设备
Sun Rasterfiles
Read_SRF Write_SRF SYLK Read_SYLK
Write_SYLK TIFF/GeoTIFF Read_TIFF
Write_TIFF WAVE Read_WAVE Write_WAVE
X11-bitmap Read_X11_Bitmap
无
XWD Read_XWD
无
表
9<
/p>
:
IDL
能够读写许多常用
的数据文件格式。一般情况下通过用
IDL
语言写的
库程序或动
态连接模块(
DLM
p>
)来
完成的,
DLM
在运行时可以添加到
IDL
中。
CD
F
、
netCDF
和
< br>HDF
文件格式是
著名的
p>
科学数据格式,有它们自己的
IDL
接口和
库程序。
147
读写常用文件格式的文件
到目
前为止,本章已经介绍了
IDL
读写数据文件的一
般方法。这种底层的能力已经可以用
IDL
读写许多
数据文件了。但是可能还想知道许
多其它文件格式如何读写。这些文件格式中就有
GIF
和
JPEG
文
件格式,它们常常在不
同办公室之间或全球范围内被用来共享数据。当想在硬拷贝中出版
图形输出时,可能
想知道也必须知道如何建立
PostScri
pt
文件。
IDL
可以读写许多常
用文件格式,这些
文件格式已在表
9
中
列出。
创建彩色
GIF
文件
GIF
文件常被用来在万维网上发布图<
/p>
形信息。如果想和同事共享图形结果,迟早要读写
GIF
文件。
要看其是如何完成的,
可装入一些数据,然后在图形窗口中显示这些数据。键入:
IDL>
Window,
XSize=300, YSize=300 IDL> data=
LoadData (1) IDL> TVLCT, [100,255,0],
[100,255,255], [100,0,0], 0 IDL> Plot,
data, /NoData, Color=2, Background=0 IDL>
OPlot, data, Color=1
写
GIF
文件
下面的命令生成一个大小为
300*300
像素的
GIF
文
件。首先,将图形
窗口的内容复制到一个
2D
字节型图像变量中。如果在使用
p>
8
位显示
器,
TV
RD
命令可用来实现这个目的。
IDL> image =
TVRD ()
如果正在
16
位或
24
位彩色显示器运行
IDL
,那么需要用
TVRD
命令获取一幅
24
位的图像,然后用
Color_Quan
p>
命令将它压缩成一幅带有正确色彩表矢量的
2D
图像,命令如下。只有是
在
16
位
或
24
位显示器上运行
IDL
,才用下面的命令代替上面的命令:
IDL> image
= TVRD (True=1) IDL> image =
Color_Quan (image24, l, r, g, b)
假如已经有
一个
2D
字节型数组,就没有必要再拷贝图形窗口。
GIF
文件格式要求将色彩表随图像数
据一起
存储到
GIF
文件内。如果使用
8
p>
位显示器,那么用
TVCL
命令和
Get
关键字就
可以得到由红、绿、蓝三种颜色
矢量组成的当前色彩表:
IDL> TVCL, r, g, b, /Get
假如正在
16
位或
24
位的显示器上运行作,没有必要键入上面的命令。可以在上面
< br>Color_Quan
命令里得到相关图像的色彩表矢量。
色彩矢量必须是
256
个元素。
如果
在
8
位显示器上运行
IDL
,这些矢量可能就没有这么长,但是不必担心。如果在写
GIF
文件时这些色彩矢量不够长的话,
IDL<
/p>
将会加长色彩矢量。如果想充分利用
256
种颜
色,可考虑在
Z
图形缓冲区装载
色彩表,然后得到颜色矢量,缺省情况下可获得
256
种颜色。
参考
125
页的“
Z
< br>图形缓冲区中的图形显示技巧”。
最后,用
Write_GIF
命
令将图像和颜色矢量写进
名为
的
GIF
文件:
IDL> Write_GIF,
‘
’
,
image, r, g, b
148
以上就是所有要做的。没有必要获取逻辑设备号或其它东西。所有这些细节都是
IDL
库程序
Write_GIF
命令
来处理的。如果对具体如何实现感到好奇的话,可以检查源
代码。
如果读者有某个应用程序能打开和读取
GIF
文件,试着读一下刚建立的文件。
许多万维网的浏览器都支持读取
GIF
文件。看一下,如果浏览器有一个
Ope
n File
按钮,
用它试试看能否读取这个
< br>GIF
文件。
读
GIF
文件
要读刚建立的
GIF
文件,可按下
p>
面简单地用
Read_GIF
命令读
GIF
文件里的图像和颜色矢量。
IDL> Read_GIF,
‘
’
,thisImage, rr, gg, bb
清除图形
窗口,装载一个灰色级调色板,可以看到
将发生什么。键入:
IDL> Erase IDL> LoadCT, 0
现在,显示刚从文件里读
取的图
像,如下:
IDL> TV,thisImage
有时候在图形窗口里什么都看不到,这是因为
GIF
图
像使用的颜色还没有装入。必须装载和
GIF<
/p>
图像相关的色彩表,以便这个图像能够正
确地显示。键入:
IDL> TVCT, rr, gg, bb
将在显示窗口里看到原始图像。
假
设在
16
位或
24
位上的显示器上,必须关掉颜色分解。为了看到正确的颜色,必须在装入
颜色表矢量
之后重新显示这个图像。
IDL> Device, Decomposed=0
IDL> TV,
thisImage
创建彩色
JPEG
文件
另外
一个常被用在万维网上共享图形结果的文件格式
是
JPEG
p>
格式。这个
JPEG
格式被称为有损压缩格
式。也就是说,当图像数据被压缩报
存到文件时,数据的一些信息内容会被丢失,并且不
能被恢复。压缩比例,丢失的信
息量以及输出图像的质量通常可用质量索引值来设定,质
量索引值的范围从
0
(丢失
许多信息内
容的,质量差)到
100
(很少或根本就没有信息丢失,质量好
)。
通常,
质量索引值被设置为<
/p>
75
,即保证一个适当的压缩比,没有丢失很多信息且图像质量损
失不大。
一幅彩色
JPEG
图像一般是
24
位的
图像。也就是说,这个图像是
3D
字节型
数组。在这个数组中,维数之一将为
3
。这个维数的位置将决
定图像是隔像素扫描(
3,
m,
n
),隔行扫描(
m, 3,
n
),还是隔波段扫描(
m, n, 3
)。在很多情况下,所拥有
的图像是
8
位的图像,而不是
24
位的图像,希望将其转变成一幅
JPEG
文件。例如,
-
-
-
-
-
-
-
-
-
上一篇:matlab和simulink命令
下一篇:1600中考词汇70篇短文复习