Bild nach Bearbeitung schwarz

granini

Bekanntes Mitglied
Hallo zusammen,

ich habe ein Problem, so bald ich die Größe eines Bildes geändert habe, wird das Bild komplett schwarz angezeigt. Die Größe wird zwar geändert, aber ist halt schwarz. Sowohl png als auch jgp.

Java:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
 
public class ImageWriter {
 
    
    public static void main(String[] args) {
        
        try {
            BufferedImage image  = ImageIO.read( new File( "src/ship.gif" ) );
            image = new BufferedImage(125, 125, BufferedImage.TYPE_INT_RGB);
            ImageIO.write( image, "jpg", new File( "shipCopy.jpg"));
 
        } catch( IOException ex){
            ex.printStackTrace();
        }       
        
    }
 
}

Jemand eine Idee?

Gruß
 
du überschreibst ja auch das alte bild mit einem neuen standartmäßig komplett schawrzem bild anstatt es zu skalieren. versuchs statt
Code:
image = new BufferedImage(125, 125, BufferedImage.TYPE_INT_RGB);
mal mit getScaledInstance
 
Ok, das macht Sinn. Bereitet mir aber auch Schwierigkeiten, da ich mit dem BufferedImage arbeiten muss. Der folgende Versuch, ergibt wieder ein schwarzes Bild mit nicht angepasster Größe.
Java:
public static void main(String[] args) {    
        try {
            BufferedImage image  = ImageIO.read( new File( "src/ship.gif" ) );
            Image scaled_image = image.getScaledInstance(125, 125, 0);
            image.getGraphics().drawImage(scaled_image, 0, 0, observer);
            ImageIO.write( image, "jpg", new File( "shipCopy.jpg"));
        } catch( IOException ex){
            ex.printStackTrace();
        }       
    }

Und was für ein Wert wird bei dem Parameter int hints empfohlen?

Gruss
 
Du willst eine skalierte Version des Ursprungsbild speichern?

Java:
        try {
            BufferedImage image  = ImageIO.read( new File( "src/ship.gif" ) );
            Image scaled_image = image.getScaledInstance(125, 125, 0);
            BufferedImage img = new BufferedImage(125, 125, BufferedImage.TYPE_INT_RGB);
            img.getGraphics().drawImage(scaled_image, 0, 0, null);
            ImageIO.write( img, "jpg", new File( "shipCopy.jpg"));
        } catch( IOException ex){
            ex.printStackTrace();
        }

edit: geht auch mit einer Zeile weniger, aber so sieht man die Logik besser
 
Zuletzt bearbeitet:

Zurück
Oben