Ik ben bezig met een programma waarmee je een foto kunt openen en eenvoudige bewerkingen daarop kunt uitvoeren, zoals verkleinen en draaien.
De bewerkte foto is een BufferedImage en zichtbaar op het canvas. Als het resultaat naar wens is dan dient het mogelijk te zijn de bewerkte foto op te slaan.
Na veel zoeken en proberen heb ik het volgende staan voor het opslaan:
Het resultaat van deze code is dat er een plaatje opgeslagen wordt in de juiste afmetingen maar zonder inhoud.
Mijn indruk is dat ik de "kleurgegevens" van de BufferedImage nog moet overzetten naar het plaatje dat opgeslagen moet worden.
Ik ben gaan proberen om pixel voor pixel de kleur te bepalen en die dan door te geven aan het nieuwe plaatje. Helaas zonder resultaat.
Wie weet de methode/oplossing om de BufferedImage op te slaan?
De bewerkte foto is een BufferedImage en zichtbaar op het canvas. Als het resultaat naar wens is dan dient het mogelijk te zijn de bewerkte foto op te slaan.
Na veel zoeken en proberen heb ik het volgende staan voor het opslaan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| public void save(String naam)
{
// Bepaal afmetingen van bewerkte plaatje
BufferedImage rechts = uitvoerRechts.bitmap;
double w = rechts.getWidth();
double h = rechts.getHeight();
// Creeer een nieuw plaatje/canvas om op te tekenen
BufferedImage image = new BufferedImage((int)w,(int)h,BufferedImage.TYPE_INT_RGB);
// Create a graphics for that image ?
Graphics2D g = (Graphics2D)image.getGraphics();
// Teken plaatje
g.drawImage(image,(int)w,(int)h,this);
// Sla het plaatje op in een bestand
FileOutputStream fos;
try
{
fos = new FileOutputStream( saveDial.getDirectory()+saveDial.getFile() );
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(image);
fos.flush();
fos.close();
}
catch(FileNotFoundException e) {
System.out.println(e);
}
catch(IOException ioe) {
System.out.println (ioe);
}
} |
Het resultaat van deze code is dat er een plaatje opgeslagen wordt in de juiste afmetingen maar zonder inhoud.
Mijn indruk is dat ik de "kleurgegevens" van de BufferedImage nog moet overzetten naar het plaatje dat opgeslagen moet worden.
Ik ben gaan proberen om pixel voor pixel de kleur te bepalen en die dan door te geven aan het nieuwe plaatje. Helaas zonder resultaat.
Wie weet de methode/oplossing om de BufferedImage op te slaan?