T
Thomas Peter
Gast
Hallo,
nachdem ich vor einigen Monaten mit Hilfe eines anderen Java-Entwicklers ein Java-Modul zum Laufen gebracht habe, mit dem ich JPG-Bilddateien in der Größe ändern und die Dateigröße komprimieren kann, möchte ich jetzt gerne die farbigen JPG-Bilder "entfärben" oder "umfärben". Das Modul läuft auf einem Webserver (TomCat), also ohne Swing-Unterstützung.
Ich würde gerne das Bild zu schwarz-weiß (Graustufenbild) umwandeln oder einen sepia-Effekt herstellen. Leider kriege ich das nicht hin. Ich habe mit Google schon eine Menge JAVA-Examples durchforstet...
Wie kann ich's lösen?
Vielen Dank
Thomas
Das Modul, mit dem die Dateien skaliert werden (auszugsweise):
nachdem ich vor einigen Monaten mit Hilfe eines anderen Java-Entwicklers ein Java-Modul zum Laufen gebracht habe, mit dem ich JPG-Bilddateien in der Größe ändern und die Dateigröße komprimieren kann, möchte ich jetzt gerne die farbigen JPG-Bilder "entfärben" oder "umfärben". Das Modul läuft auf einem Webserver (TomCat), also ohne Swing-Unterstützung.
Ich würde gerne das Bild zu schwarz-weiß (Graustufenbild) umwandeln oder einen sepia-Effekt herstellen. Leider kriege ich das nicht hin. Ich habe mit Google schon eine Menge JAVA-Examples durchforstet...
Wie kann ich's lösen?
Vielen Dank
Thomas
Das Modul, mit dem die Dateien skaliert werden (auszugsweise):
Code:
public int createFileWithNewSize(String inFile,
String outFile,float x, float
y,long maxKB) throws IOException {
int ret = 1; // 1=ok, -1 = Fehler - keine Datei angelegt, 0 =...
RenderedOp objImage =null;
File inputFile = new File (inFile);
File outputFile = new File(outFile);
InputStream is;
// einige Prüfungen, ob Datei vorhanden etc. ....
try
{
is = new FileInputStream(inputFile);
SeekableStream s = SeekableStream.wrapInputStream(is, true);
objImage = JAI.create("stream", s);
((OpImage)objImage.getRendering()).setTileCache(null);
// Breitenverhältnis (neu Breite/Originalbreite)
float xScale = x/objImage.getWidth();
// Höhenverhältnis (neue Länge/Originalhöhe)
float yScale = y/objImage.getHeight();
// Setze den Verkleinerungsfaktor auf das Kleinere der beiden
// Verhältnisse (Breite oder Höhe)
if (xScale>yScale) {xScale=yScale;} else {yScale=xScale;}
if(!outputFile.createNewFile()){
throw new IOException("Could not create new File, "+
"check permissions!");
}
ParameterBlock pb = new ParameterBlock();
pb.addSource(objImage);
pb.add(xScale);
pb.add(yScale);
pb.add(0.0F);
pb.add(0.0F);
pb.add(new InterpolationNearest()); // The interpolation
objImage = JAI.create("scale", pb, null);
// Hier passierts ...
debugOut("Datei neu berechen: ..."
+"+outputFile.getAbsolutePath());
JAI.create("filestore", objImage,
outputFile.getAbsolutePath(), "JPEG", null);
debugOut("Datei angelegt!");
is.close();
// Datei evtl. noch komprimieren ....
}
catch(IOException e){
debugOut(e.getMessage());
ret = -1;
}
return ret;
}