第五章 输入输出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.2 ASCII码和二进制格式



文件操作和逻辑设备号: 打开文件:OpenR,OpenW,OpenU 关闭文件:Close 逻辑设备号:用来操作文件,其值为-2到128 ,相当于C语言中的文件指针 获取逻辑设备号:get_lun 释放逻辑设备号并关闭文件:free_lun OpenR, 20,’temp596.dat’ OpenR, lun, filenam/file.txt' openr,lun,file,/get_lun temp='' while(~eof(lun)) do begin readf,lun,temp endwhile free_lun,lun

5.2 ASCII码和二进制格式


5.3图像格式



IDL支持的常用图像格式 BMP读写 JPEG/JPEG 2000读写 GIF的读写 PNG的读写 TIFF/Geotiff读写
5.3图像格式-BMP的读写


BMP的文件格式,数据格式:4位,8位,24位 ,32位 读BMP

Result = READ_BMP( Filename, [, R, G, B] [, Ihdr]
面向对象程序设计——IDL
第五章 输入与输出
第五章 输入与输出

5.1 标准输入输出 5.2 ASCII码和二进制格式 5.3 图像格式

Bmp数据 Jpeg数据 gif数据 Tiff数据 Image数据
IDL输入与输出



IDL中的基本原则是:“只要有数据,就可以 将其读进IDL”。 IDL没有格式要求,也没有特别要求在将数据 带入IDL时对数据进行准备。 这使得IDL成为目前功能最强、最灵活的科学 可视化分析语言。


读写文本(ASCII)文件 跳过头文件(文件说明信息) 已知头文件信息的行数n 读n行信息到临时字符串中

循环读取信息到字符串中

从第n+1行开始读取,让逻辑设备号(文件指 针)跳到第n+1行

Skip_lun,lun,n,/lines
5.2 ASCII码和二进制格式

读写二进制文件 二进制文件是将数据内容按照二进制字节方式 存储在文件中
5.2 ASCII码和二进制格式

读写二进制文件 向导式读取 启动向导工具

Stplate=Binary_Templete(file)
Data=read_binary(file,template=stplate)

读取内容,返回结构体

5.2 ASCII码和二进制格式

读写二进制文件 自我描述格式,跳过头文件 读取风云二号C卫星数据
5.3图像格式-BMP的读写

举例

filename=dialog_pickfile() data=read_bmp(filename) TV, data,/true a = BYTARR(3, 200, 200, /NOZERO) a[0, *, *] = 255 a=indgen(3,200,200) filename1=dialog_pickfile() write_bmp,filename1,a
5.3图像格式-JPEG/JPEG2000的读写

举例: filename=dialog_pickfile() read_jpeg,filename,image
filename=dialog_pickfile() img=indgen(3,200,200) write_jpeg,filename,img,true=1

5.3图像格式-BMP的读写


写BMP
WRITE_BMP, Filename, Image[, R, G, B] [, /FOUR_BIT] [, IHDR=structure] [, HEADER_DEFINE=h{define h before call}] [, /RGB] /FOUR_BIT:数据是4位还是8为位 Image:要写入的数据 Filename:要写入的文件,包含路径
[, /MULTIPLE_FILES] [, /MUST_EXIST] [, /OVERWRITE_PROMPT] [, PATH=string] [, /READ | , /WRITE] [, RESOURCE_NAME=string] [, TITLE=string] )
5.2 ASCII码和二进制格式


按照提供数据头文件形式读取 可以跳过头文件信息 Point_lun过程,跳到的字节数 Point_lun,lun,4,表示跳到4字节


filename=dialog_pickfile() openr,lun,filename,/get_Lun point_lun,lun,20 headline=indgen(3) readu,lun,headline point_lun,lun,58 begindata=indgen(5) enddata=indgen(5) latlong=indgen(4) readu,lun,begindata readu,lun,enddata readu,lun,latlong data=bytarr(headline[2],headline[0]) point_lun,lun,headline[0]*headline[1] readu,lun,data
5.2 ASCII码和二进制格式



读写自由格式的文本(ASCII)文件 所谓自由格式:文件中的数据必须用逗号或空 白分隔(空格键或tab键)。 如果读入到字符串变量中,那么,在当前行剩 下的所有字符都将读入该变量中。也就说每一 行是一个整体 当读入到其它数据类型,则通过空格或逗号或 换行分隔
浮点数格式



[n]F/D/E/G[+][-][w][.d] n:重复次数 +、-:同上 w:宽度 d:有效精度 F/D/E/G

F/D,浮点型; E,科学计数法 G,系统自动选择F或D方式输出
进制格式

[n]B[-][w][.m]

二进制

[n]I[+][-][w][.m]
5.1 标准输入输出

标准输入是键盘输入,Read; 标准输出是键盘输出,Print; 输出格式控制:[n]FC[+][-][width]


n:格式控制重复次数 FC:格式控制符 +:数字前加“+”,仅数字格式有效 -:控制左对齐,默认右对齐 Width:控制宽度
代码含义
格式代码
5.3图像格式-JPEG/JPEG2000的读写


写JPEG/JPEG2000
WRITE_JPEG [, Filename], Image [, TRUE={1 | 2 | 3}] Filename:文件名 Image:写入数据。 [, TRUE={1 | 2 | 3}] ,如果写入的灰度值数据, 该关键字忽略,如果写入真彩色数据,该关键字需 要赋值,一般赋值为1.
5.2 ASCII码和二进制格式

读写文本(ASCII)文件 Readf,printf

array=findgen(25) header='Test data file.' OpenW , lun, 'd:/test.dat',/Get_Lun PrintF, lun, header PrintF, lun, array Free_Lun, lun



文件路径的获取:通过对话框打开文件获取文 件路径 Dialog_Pickfile函数
Result = DIALOG_PICKFILE( [, DEFAULT_EXTENSION=string] [, /DIRECTORY] [, DIALOG_PARENT=widget_id] [, DISPLAY_NAME=string] [, FILE=string] [, FILTER=string/string array] [, /FIX_FILTER] [, GET_PATH=variable] [, GROUP=widget_id]

5.3图像格式-GIF的读写


Gif数据是有多幅灰度值值数据构成的。GIF数 据格式可以做成一幅动态的假彩色图(颜色不 超过256种)。 读GIF

READ_GIF, Filename, Image

写GIF

WRITE_GIF, Filename, Image
5.3图像格式-PNG的读写

比如10000,文本文件5个字节,二进制4个字节

读写二进制使用readu和writeu过程 读写类似于文本文件格式
5.2 ASCII码和二进制格式



读写二进制文件 直接读写 filename=dialog_pickfile() openw,lun,filename,/get_Lun writeu,lun,indgen(4,5) free_lun,lun


Tvgd():从当前活动的显示窗口复制图像数据 。
5.3图像格式-JPEG/JPEG2000的读写



JPEG/JPEG2000文件格式:灰度值图,真彩色 图 读JPEG/JPEG2000 read_jpeg,filename,image

Filename:文件名 Image:读出数据。灰度数据格式 (biWidth, biHeight),真彩色数据格式(3, biWidth, biHeight)

十进制
八进制 十六进制

[n]O[-][w][.m]


[n]Z[-][w][.m]


[.m]:表示显示的最小位数
日期与时间格式

systime():获取当前时间,返回字符串形式 systime(/julian):返回浮点形式

C():输出完整时间 C(CYI):输出数字年 C(CMOI):输出数字月 C(CDI):输出数字天 C(CHI):输出数字小时 C(CMI):输出数字分钟 C(CSI):输出数字秒 C(CDWA):输出字符星期 C(CAPA):输出字符上午或下午
A F, D, E, G B, I, O, Z : $
含义
字符 浮点型数据 进制转换,B/2,I/10,O/8,Z/16 终止符号 不输出换行
print,format='(6i-3)',arr print,Format='("the array is:",6i+5)',arr print,format='("the array is:",6(i+5,","))',arr print,format='("the array is:",6(i+5,:,","))',arr

读写文本(ASCII)文件 通过向导式读取 Tplate=Ascii_template(file)

打开向导设置,获得模板结果Tplate
通过向导读取ASCII码文件 Data是一个结构体

Data=Read_ascii(file,template=tplate)


5.2 ASCII码和二进制格式

读png
Result = READ_PNG ( Filename )或者 READ_PNG, Filename, Image
5.2 ASCII码和二进制格式

file='d:/file.txt' openr,lun,file,/get_lun temp=intarr(3) str=strarr(2) data=fltarr(2,4) readf,lun,temp readf,lun,str readf,lun,data free_lun,lun
[, /RGB] )

Filename:要读出的文件,包含路径
/RGB:表示数据是否将红,蓝反转 Result存储bmp数据,24位,数据格式(3, biWidth, biHeight);8位,数据格式 (biWidth, biHeight). Result[0,i,j] = blue, Result[1,i,j] = green , Result[2,i,j] = red
相关文档
最新文档