[Java] Wie kann ich ein Bild in ein int[] einlesen lassen?

1 Antwort

Also um nur einmal vorweg die Begrifflichkeiten zu klären: Die definierst die Variable map.

Zu deinem Problem: Lies das Bild direkt in den gewünschten Typ ein. Hole dir erst den Stream:

ImageInputStream inputStream = ImageIO.createImageInputStream(imageFile);

Und erzeuge dir dazu einen Reader:

Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(inputStream);

if (!imageReaders.hasNext()) {
  // there are no readers, do something
}

ImageReader imageReader = imageReaders.next();

Wenn es einen passenden Reader gibt, kannst du den passenden Bildtyp setzen:

imageReader.setInput(input);
ImageReadParam imageReaderParameter = imageReader.getDefaultReadParam();
ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
defaultImageReaderParameter.setDestinationType(imageType);

BufferedImage image = imageReader.read(0, imageReaderParameter); 

Vergiss nicht, Stream und Reader nach Nutzung zu schließen. Du kannst hierfür try-with-resources-Blöcke verwenden.

16

Abend,

Ach stimmt, danke für den Hinweis, und deklarieren ist ja das "protected map;", wenn ich mich nicht Irre?

Ich habe es erstmal ohne deinen Ansatz geschafft, dass das Programm kompiliert werden kann und so direkt keine Syntax oder Cast Fehler auftreten, aber anscheinend stimmt etwas mit der Semantik nicht, denn das Bild wird fehlerhaft angezeigt (Es werden diagonal verlaufende abwechselnd rot, grün blaue Streifen angezeigt.)

Ich hoffe, dass ich diesen Fehler mit deinem Ansatz beheben kann und es einfach daran liegt, dass die RGB-Werte falsch gelesen/geschrieben werden. Trotzdem bitte ich Dich, Dich bis morgen zu gedulden, da ich es leider erst morgen ausprobieren kann!

0

wie wandle ich das folgende UML Diagramm in ein Javacode um bzw wo habe ich was falsch gemacht und welcher Rückgabewert muss dahin? :/

Ich bin wirklich kein Freund des Fachs Informatik, bemühe mich aber dennoch die Aufgaben,so gut wie es mir nur möglich ist, zu lösen. Ich habe angefangen das UML Diagramm in ein Code umzuwandeln und habe so gut wie fast überall einen Fehler und ich weiss nicht so recht wieso. Vor allem was den Rückgabewert angeht zeigt der mir jedes mal einen Fehler an, daher habe ich diese Stelle erstmal frei gelassen und wüsste gerne was dort hinkommt :/

public class Matrix {
    private double [][]data;
    private String bezeichnung;

    public Matrix (String bezeichnung,double data [][]) {
        }
    public Matrix (String bezeichnung, int dimension){
    }
    public Matrix (String bezeichnung, int zeilen, int spalten){    
    }
    public  boolean setWert (int zeile, int spalte, double wert){
    return true;
    }
    public double getWert (int zeile, int spalte){
    return Double.NaN;}

 public boolean istGleichGroß (Matrix m2){       // BIS HIER HIN IST ALLES OKE

public Matrix addiere (Matrix m2){
  return;  
 }

public Matrix kopiere(){

 public Matrix multipliziere(Matrix m2) {
 return;
  }
}
public Matrix multipliziere(double skalar) {
return;
}
public int getZeilen(){
}
public int getSpalten()  {
}   
public String getBezeichnung() {
} 
public void zeige (){
}
...zur Frage

[JAVA] Auf eine Methode in einer anderen Klasse zugreifen?

import static java.lang.System.out;
import java.util.Scanner;

public class Datentypen {
@SuppressWarnings("unused")
public static void main(String[] args){
    
    Scanner  keyboard = new Scanner(System.in);
    
    out.println("In Java gibt es viele verschiedene Datentypen. Da ich Ihnen die Unübersichtlichkeit sparen möchte,");
    out.println("habe ich dieses Programm geschrieben. Dieses Programm enthält jeweils ein Beispiel zu je einem Datentypen.");
    out.println("Also, worauf warten Sie? Suchen Sie sich einen Datentypen aus!");
    out.println();
    out.println("Boolean        Char");
    out.println("Byte       Short");
    out.println("Int        Long");
    out.println("Float      Double");
    
    String datentypen  = keyboard.next();
            
    switch(datentypen){
    case "Boolean":
        booleantyp();              //Fehler ist hier!
    }
    }


}

Zweite Klasse:

public class DatentypenMethoden {
public static void maint(String[] args){
    
}

public void booleantyp(){
    
}
}

Wie greife ich jetzt von der Klasse Datentypen auf die Methode "booleantyp()"?

...zur Frage

Hallo zusammen! Brauche Hilfe in Java, bei einem Programm über Lottozahlen (Zufallszahlen). Danke im Voraus schon mal! ?

Mein Programm zieht 10-mal 6 Zufallszahlen. Das erste Problem ist, dass die Zahlen doppelt vorkommen können, und es auch tun. Mein zweites Problem ist, dass ich den Auftrag habe, angeben zu können welche Zahl wie oft gezogen wurde. Dies bezieht sich darauf, dass wir eine Statistik erstellen sollen, welche Zahl wie oft vorkommt, wenn man 1000-mal die 10 Zahlen ziehen lässt. Hier nun mein Programm : /** * * Beschreibung * * @version 1.0 vom 21.08.2015 * @author / public class ConLotto { // Anfang Attribute private static int [] ziehung = new int [6]; // Ende Attribute // Anfang Methoden public static void main(String[] args) { for (int i=0;i<10 ;i++ ) { bildeZiehungszahlen(); zeigeZiehungszahlen(); } // end of for } // end of main public static void bildeZiehungszahlen () { for (int i = 0 ; i < 6 ; i++) { ziehung [i] = 1+(int)(49Math.random()); } // end of for } public static void zeigeZiehungszahlen () { System.out.print (" Ziehung ergab:"); for (int i = 0;i<6 ;i++ ) { System.out.print(" " + ziehung [i]) ; } // end of for System.out.println(); } public static void anzahlZiehungszahlen () {

} // Ende Methoden } // end of class ConLotto

Danke im Voraus schon mal!

...zur Frage

Was möchtest Du wissen?