Hauptseite   Packages   Klassenhierarchie   ?bersicht   Auflistung der Dateien   Datenstruktur-Elemente  

PNG2ARFF.java

gehe zur Dokumentation dieser Datei
00001 /*
00002  * $Source: /shared/cvsroot/diplom/app/src/java/de/picana/converter/PNG2ARFF.java,v $
00003  * $Author: mstolpe $
00004  * $Date: 2003/04/22 09:51:28 $
00005  * $Revision: 1.8 $
00006  * $Release$
00007  *
00008  * Created on 08. November 2002, 22:09
00009  * 
00010  * Copyright 2002 by Marco Stolpe 
00011  */
00012 
00013 package de.picana.converter;
00014 
00015 import de.picana.control.*;
00016 import de.picana.logging.*;
00017 
00018 import java.util.*;
00019 import java.io.*;
00020 import java.awt.image.*;
00021 import javax.imageio.*;
00022 
00023 
00030 public class PNG2ARFF extends Task {
00031 
00032     private String in_filename;
00033     private String out_filename;
00034     private int upperLeftX;
00035     private int upperLeftY;
00036     private int lowerRightX;
00037     private int lowerRightY;
00038     
00039     
00041     public PNG2ARFF() {   
00042     }
00043 
00044     public void init(ParameterSet params, Logger logger) {
00045         
00046         super.init(params, logger);
00047         
00048         upperLeftX = 0;
00049         upperLeftY = 0;
00050         lowerRightX = -1;
00051         lowerRightY = -1;
00052         int width = 0;
00053         int height = 0;
00054         
00055         in_filename = (String)params.getParameter("in");
00056         out_filename = (String)params.getParameter("out");
00057         
00058         try {
00059             upperLeftX = Integer.parseInt((String)params.getParameter("upperLeftX"));
00060         } catch (NumberFormatException nfe) {}
00061         
00062         try {
00063             upperLeftY = Integer.parseInt((String)params.getParameter("upperLeftY"));
00064         } catch (NumberFormatException nfe) {}
00065         
00066         if ((String)params.getParameter("width") != null) {
00067             try {
00068                 width = Integer.parseInt((String)params.getParameter("width"));
00069             } catch (NumberFormatException nfe) {}
00070             lowerRightX += width;
00071         }
00072         
00073         if ((String)params.getParameter("height") != null) {
00074             try {
00075                 height = Integer.parseInt((String)params.getParameter("height"));
00076             } catch (NumberFormatException nfe) {}
00077             lowerRightY += height;
00078         }
00079         
00080         if (lowerRightX == -1) {
00081             try {
00082                 lowerRightX = Integer.parseInt((String)params.getParameter("lowerRightX"));
00083             } catch (NumberFormatException nfe) {}
00084         }
00085         
00086         if (lowerRightY == -1) {
00087             try {
00088                 lowerRightY = Integer.parseInt((String)params.getParameter("lowerRightY"));
00089             } catch (NumberFormatException nfe) {}
00090         }
00091     }
00092     
00093     public void start() throws TaskException {
00094         
00095         try { 
00096             File infile = new File(in_filename);
00097             File outfile = new File(out_filename);
00098             
00099             if (!outfile.exists()
00100                 || (outfile.exists() && (outfile.lastModified() <= infile.lastModified()))) {
00101             
00102                 logger.info(LOGSRC, "Started.");
00103             
00104                 FileInputStream input = new FileInputStream(infile);
00105                 FileOutputStream output = new FileOutputStream(outfile);
00106                 PrintWriter pw = new PrintWriter(output);
00107             
00108                 pw.println("% ARFF file for picture data from PNG files");
00109                 pw.println("%");
00110                 pw.println("@relation colour");
00111                 pw.println();
00112                 pw.println("@attribute red numeric");
00113                 pw.println("@attribute green numeric");
00114                 pw.println("@attribute blue numeric");
00115                 pw.println();
00116                 pw.println("@data");
00117                 pw.println("%");
00118                 pw.println("% x instances");
00119                 pw.println("%");
00120             
00121                 BufferedImage image = ImageIO.read(input);
00122             
00123                 int x, y;
00124             
00125                 if ((upperLeftX < 0) || (upperLeftX >= image.getWidth()))
00126                     upperLeftX = 0;
00127             
00128                 if ((upperLeftY < 0) || (upperLeftY >= image.getHeight()))
00129                     upperLeftY = 0;
00130             
00131                 if ((lowerRightX < 0) || (lowerRightX >= image.getWidth()))
00132                     lowerRightX = image.getWidth()-1;
00133             
00134                 if ((lowerRightY < 0) || (lowerRightY >= image.getHeight()))
00135                     lowerRightY = image.getHeight()-1;
00136             
00137             
00138                 for (y=upperLeftY; y <= lowerRightY; y++) {
00139                  
00140                     for (x=upperLeftX; x <= lowerRightX; x++) {
00141 
00142                         int rgb = image.getRGB(x,y);
00143                         int red =   (rgb & 0x00ff0000) >> 16;
00144                         int green = (rgb & 0x0000ff00) >> 8;
00145                         int blue =  (rgb & 0x000000ff);
00146                     
00147                         pw.print((red / 256.0) + ", ");
00148                         pw.print((green / 256.0) + ", ");
00149                         pw.print((blue / 256.0));
00150                         pw.println();
00151                     }
00152                 }
00153 
00154                 pw.close();
00155                 input.close();
00156             
00157                 logger.info(LOGSRC, "Stopped.");
00158             }
00159 
00160         } catch (Exception e) {
00161             throw new TaskException(e.toString());    
00162         }
00163     }
00164     
00165     public void stop() {
00166         
00167     }
00168     
00169     public void pause() {
00170         
00171     }
00172     
00173     public void resume() {
00174         
00175     }
00176 }

Erzeugt am Tue Apr 22 11:22:56 2003 f?r Picana von doxygen1.2.18