processing笔记1——表格、文本、图片读存

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去表示保存完毕。保存中途中断的话,图片会只存了一半,或者图片文件受损打不开。

你可能感兴趣的:(processing笔记1——表格、文本、图片读存)