x2pgm
import java.util.*;
import javax.imageio.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
/*
x2pgm - converts various file formats to pgm
Copyright (C) 2006 Philipp Haussleiter
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to
the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
*/
class Color2GrayFilter extends RGBImageFilter {
int red,green,blue;
int A=100;int B=100;int C=100;
public Color2GrayFilter () {
canFilterIndexColorModel = true;
}
public int filterRGB (int x, int y, int rgb) {
red = (rgb & 0xff0000) >>16;
green = (rgb & 0xff00) >>8;
blue = (rgb & 0xff);
red =red*A/100;green = green*B/100; blue = blue*C/100;
return (0xff000000 | red <<16| green << 8| blue);
}
}
public class x2pgm extends Frame{
/**
* @param args
*/
Color2GrayFilter filter;
String[] name, size;
Image SrcImage, gray;
int w, h, pw, ph;
PixelGrabber grab;
boolean debug = false;
boolean header = true;
public static void main(String[] args) {
x2pgm Loader = new x2pgm(args);
}
public void writeString(String wort, OutputStream out){
try{
for(int i=0; i< wort.length(); i++)
out.write((int)wort.charAt(i));
out.write((int)'\n');
}catch(Exception e){
System.out.println("Cannot Write to File");
}
}
public x2pgm(String[] args){
// TODO Auto-generated method stub
System.out.println("x2pgm v 0.0.0.1");
System.out.println("==================================================================");
if(args.length < 2){
System.out.println("Usage:");
System.out.println("x2pgm <inputfile [.png|.gif|.bmp|.jpeg]> <output_file> [debug] [noheader]");
}else{
filter = new Color2GrayFilter ();
name = args[0].split("\\.");
String ext = "pgm";
//size = args[2].split("x");
int i = 0;
try{
if(args[2].equals("debug") || args[3].equals("debug")) debug = true;
if(args[3].equals("noheader") || args[2].equals("noheader")) header = false;
}catch(Exception e){}
try{
File IN;
IN = new File( args[0] );
SrcImage = ImageIO.read( IN );
/*
w = Integer.parseInt(size[0]);
h = Integer.parseInt(size[1]);
*/
ph = SrcImage.getHeight(this);
pw = SrcImage.getWidth(this);
gray = createImage (new FilteredImageSource (SrcImage.getSource(), filter));
/*
System.out.println("->Schreibe Bild als: "+size[0]+"/"+pw+"px ("+((float)w/(float)pw*100)+"%) x "+size[1]+"/"+ph+"px ("+((float)h/(float)ph*100)+"%)");
*/
final int[] pixels = new int[pw * ph];
grab = new PixelGrabber( SrcImage, 0, 0, pw, ph, pixels, 0, pw );
try{
grab.grabPixels();
}catch ( InterruptedException e ) {
System.err.println( "Error getting pixels" );
}
if(header == true)
ext = "pgm";
else
ext = "raw";
OutputStream out = new FileOutputStream(args[1]+"."+ext) ;
if(header == true){
writeString("P5",out);
writeString(pw+" "+ph,out);
writeString("255",out);
}
for(i = 0; i < pixels.length; i++){
if(debug && i%pw == 0)
System.out.print("#");
out.write(pixels[i]);
}
out.flush();
out.close();
}
catch(IOException e){
System.out.println("Fehler: "+e.toString());
}
System.out.println("");
System.out.println("->"+i+" Zeilen geschrieben !");
}
System.out.println("==================================================================");
System.out.println("(c) Philipp Haussleiter 2006");
System.out.println("Skalierung geht noch nicht :-)");
System.out.println("==================================================================");
}
}
Written by Philipp Haußleiter
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Image
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#