1、表格读写
表格格式:
目前此方法支持“.csv”文件。其余文件格式应该是不支持的。不过幸好,学姐们给的数据文件格式也是csv文件。
表格读取相关代码语法:
涉及的数据类型(类):
Table table; //表格类
TableRow row; //表格行类
读取表格文件:
table=loadTable("******.csv","header"); //第一参:文件路径
//第二参:省略为无表头,header为有表头
获取一些表格信息:
int countNum=table.getRowCount(); //总行数。列数是getColumnCount
读取指定行:
row=table.getRow(INT); //要第几行就写几。表头不算行数。
//行数从第0行开始算起
//如果需要获得表头内容,读取文件的时候不能用header读进来
获得指定单元格内容:
先读取指定行,再读取该行的指定列:
row=table.getRow(INT);
Object xxx=row.getObject(INT/STRING); //比如:
int x=row.getInt(0);
float y=row.getFloat(1);
String name=row.getString("Name");
//在提供的数据类型里读取。参数是int或者字符串String类型
//int就是列索引,从第0列算起
//String要求必须是用header读进来的有表头的表格
//String内容即为该列的列名。重复列名估计只取第一个
表格新建、写入、保存相关代码语法:
表格保存:
saveTable(table,"*****.csv"); //第一参:表格
//第二参:保存路径。已存在文件则会覆盖内容
表格修改:
步骤大致:读表格——设置单元格的值——保存覆盖/另存
//读表格
//读某行
row.setObject(INT/STRING,Object); //设置值
//第一参:列索引/列名(有表头)
//第二参:要设置的数据类型的变量
//比如:
row.setFloat("Start",13.66f);
saveTable(table,"*****.csv"); //覆盖就和原路径一样,另存就写个新的路径
新建表格:
步骤大致:新建表格对象——设置列——增加行——设置单元格的值——保存
Table targetTable;
targetTable=new Table();
targetTable.addColumn("Start",Table.FLOAT);
targetTable.addColumn("R",Table.FLOAT);
targetTable.addColumn("G",Table.FLOAT);
targetTable.addColumn("B",Table.FLOAT);
targetTable.addColumn("A",Table.FLOAT);
//给了列名和数据类型。具体参数是否可省看文档
TableRow targetRow=targetTable.addRow();
//新增一行。可以一直增,然后重新获取目标行在设置单元格内容
targetRow.setFloat("Start",start);
targetRow.setFloat("R",rawEndRow.getFloat("R"));
targetRow.setFloat("G",rawEndRow.getFloat("G"));
targetRow.setFloat("B",rawEndRow.getFloat("B"));
targetRow.setFloat("A",rawEndRow.getFloat("A"));
//设置值
saveTable(targetTable,"***********.csv");
//保存
2、文本读取
TXT文本目前只用到读取,格式要求:
TXT文本文档,含中文的话,则要求是U8编码,否则processing读取到的是乱码中文。
U8编码可以在TXT文本进行另存为时修改。
代码语法:
按行逐行读取的一整套:
BufferedReader reader; //读取器
reader=createReader("*******.txt"); //参数是:文本文档路径的String
try{
String line="";
line=reader.readLine(); //line即读取的行
while(line!=null){ //不为空就继续读
/****
操作
***/
line=reader.readLine(); //读下一行
}
reader.close();
}
catch(IOException e){
println(e);
}
暂不清楚文本中有空行时会发生什么。可能会停下。
3、图片读存
格式:
应该是各种常见的图片格式都可以的。
代码语法:
读图片像素RGB:
PImage img;
img=loadImage("******.png","png"); //第一个参数路径,第二个参数可以省
img.loadPixels(); //文档要求写,貌似省略也没问题。安全起见还是写了
color pix=img.pixels[j*128+i]; //一维数组,应该是横向排列的
int b=pix&0xFF;
int g=(pix>>8)&0xFF;
int r=(pix>>16)&0xFF; //运用了位运算
color类型实质是一个int。16进制下正好是常见的颜色编码,比如C392B4这样子。位运算后与16进制下的255(就是FF,二进制8位全1)进行与运算,截得最低的8位。按顺序,得到的结果由高到低分别是R,G,B。
存画布:
将当前画布内容(当前帧)存成图片。
save("********.png"); //其他常见格式jpg、tif也可以
存序列帧:
将当前帧存成固定命名格式的图片。
saveFrame("***-######.png"); //具体命名规则文档里有
//井号会被替换成帧数(frameCount),高位补0
一般用法是将它写在draw()里,保存成序列帧,整理到一个文件夹里。
然后用processing的“工具——Movie Maker”,选择这个文件夹,设置帧数,导出成视频文件。
可以用一个index去除以间隔数取余,实现抽帧保存。
直接保存图片文件:
修改图片文件的像素值之后,直接保存图片变量为文件。文档里肯定有相关方法,但是我暂时没用到。所以不忙写了。用到再补。
注意事项:
保存图片时要等上一会儿,保存需要一定时间。建议加个println去表示保存完毕。保存中途中断的话,图片会只存了一半,或者图片文件受损打不开。