00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 package de.picana.converter;
00014
00015 import de.picana.control.*;
00016 import de.picana.logging.*;
00017
00018 import weka.core.*;
00019
00020 import java.io.*;
00021 import java.util.*;
00022 import java.awt.image.*;
00023 import javax.imageio.*;
00024 import javax.imageio.stream.*;
00025
00026
00033 public class ARFF2PNG extends Task {
00034
00035 private String infile;
00036 private String outfile;
00037 private int width;
00038 private int height;
00039
00040 private Instances instances;
00041
00042
00044 public ARFF2PNG() {
00045 }
00046
00047 public void init(ParameterSet params, Logger logger) {
00048
00049 super.init(params, logger);
00050
00051 width = 0;
00052 height = 0;
00053
00054 infile = (String)params.getParameter("in");
00055 outfile = (String)params.getParameter("out");
00056
00057 try {
00058 width = Integer.parseInt((String)params.getParameter("width"));
00059 } catch (NumberFormatException nfe) {}
00060
00061 try {
00062 height = Integer.parseInt((String)params.getParameter("height"));
00063 } catch (NumberFormatException nfe) {}
00064 }
00065
00066 public void start() throws TaskException {
00067
00068 logger.info(LOGSRC, "Started.");
00069
00070 try {
00071 File input = new File(infile);
00072 FileInputStream fis = new FileInputStream(input);
00073 InputStreamReader reader = new InputStreamReader(fis);
00074 instances = new Instances(reader);
00075
00076 BufferedImage image = new BufferedImage(width, height,
00077 BufferedImage.TYPE_INT_RGB);
00078
00079 for (int y=0; y < height; y++) {
00080
00081
00082
00083
00084 for (int x=0; x < width; x++) {
00085
00086 int index = y * width + x;
00087 Instance ex = instances.instance(index);
00088
00089 int red = (int)(ex.value(0) * 256);
00090 int green = (int)(ex.value(1) * 256);
00091 int blue = (int)(ex.value(2) * 256);
00092 int rgb = (red << 16) + (green << 8) + blue;
00093
00094 image.setRGB(x, y, rgb);
00095 }
00096 }
00097
00098 Iterator writers = ImageIO.getImageWritersByFormatName("png");
00099 ImageWriter wr = (ImageWriter)writers.next();
00100
00101 ImageOutputStream ios = ImageIO.createImageOutputStream(
00102 new FileOutputStream(outfile));
00103 wr.setOutput(ios);
00104 wr.write(image);
00105
00106 logger.info(LOGSRC, "Stopped.");
00107
00108 } catch (Exception e) {
00109 throw new TaskException(e.toString());
00110 }
00111 }
00112
00113 public void stop() {
00114 }
00115
00116 public void pause() {
00117 }
00118
00119 public void resume() {
00120 }
00121 }