buffered image

silson

Aktives Mitglied
hallo ich habe mal eine Frage,
könnte mir einer den code für ein bufferes image geben?
Ich habe hier schon einiges gelesen, bzw. nachgeschaut, aber ich bin nicht wirklich schlau geworden, da ich Anfänger bin.
Ich habe das Bild schon als resource code geschrieben was auch funktioniert, aber es reicht mir nicht.

besten Danke im vorraus


hier der code für resource
Code:
package de.test2.java;

import java.awt.Color;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;



public class Main extends JFrame {
   
    JLabel bild1;
    Icon textPause;
   
   
   
    public Main(){
       
        textPause = new ImageIcon(getClass().getResource("LAS_Vegas_m_037.jpg"));
        bild1 = new JLabel(textPause);
        bild1.setBounds(90, 150, 638, 425);
        add(bild1);
    }

   
   
    public static void main(String[] args) {
       
        Main frame = new Main();
        frame.setTitle("main");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 800);
        frame.getContentPane().setLayout(null);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.getContentPane().setBackground(new Color(0, 0, 0));
    }
}
 

silson

Aktives Mitglied
ich weiss nicht wie du das meinst kannst du mir das ganze als code schreiben.
setze ich einfach für
textpause = new imageIcon(getClass....usw. deinen code ein?
wenn nicht kannst du mir das genauer erklären.
bin anfänger und verstehe manchmal nur bahnhof hier
 

Schesam

Bekanntes Mitglied
Wofür brauchst du das BufferedImage denn? Wenn du ein BIld auf nem label anzeigen willst ist die Variante über ImageIcon schon in Ordnung
 

silson

Aktives Mitglied
ich wollte eine zeit ablaufen lassen und das funktioniert nicht...also im programm selber schon.
aber wenn ich ne jar erstelle dann nicht weil das bild irgendwie nicht hochgeladen wird.
upload_2016-3-27_0-49-20.png

und mit der zeile 88 geht es, aber es funktioniert nur im programm selber wenn ich im menu auf den grünen Pfeil drücke aber als jar kann er das bild nicht finden.

und mit der zeile 89 geht es garnicht.
hier ist der code.
Code:
package de.main.java;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;



public class Main extends JFrame {
   
   
    public final static int SHOW_TIME_PER_SLIDE = 600;
   
    Timer timer = new Timer(SHOW_TIME_PER_SLIDE, new ButtonHaendler());
   
    JLabel bild1;
    Icon textPause;
   
    JLabel bild2;
    Icon timerZahlen;
   
    JButton buttonPause;
   
    JButton buttonPlay;
   
   
    public Main(){
       
        Icon a = new ImageIcon(getClass().getResource("button pause orange.jpg"));
        Icon b = new ImageIcon(getClass().getResource("button pause blau.jpg"));
        buttonPause = new JButton("", a);
        buttonPause.setRolloverIcon(b);
        buttonPause.setBounds(750, 20, 59, 84);
        buttonPause.setBorder(null);
        buttonPause.addActionListener(new ButtonHaendler());
        add(buttonPause);
       
        Icon c = new ImageIcon(getClass().getResource("button play orange.jpg"));
        Icon d = new ImageIcon(getClass().getResource("button play blau.jpg"));
        buttonPlay = new JButton("", c);
        buttonPlay.setRolloverIcon(d);
        buttonPlay.setBounds(650, 20, 75, 84);
        buttonPlay.setBorder(null);
        buttonPlay.addActionListener(new ButtonHaendler());
        add(buttonPlay);
       
        textPause = new ImageIcon(getClass().getResource("text pause.png"));
        bild1 = new JLabel(textPause);
        bild1.setBounds(150, 180, 1205, 284);
        bild1.setVisible(false);
        add(bild1);
       
        timerZahlen = new ImageIcon(getClass().getResource("timer9.jpg"));
        bild2 = new JLabel(timerZahlen);
        bild2.setBounds(620, 120, 225, 400);
        add(bild2);
    }
   
   
    class ButtonHaendler implements ActionListener{
       
        int ziffer = 9;

        @Override
        public void actionPerformed(ActionEvent e) {
           
            if(e.getSource()== buttonPause){
                bild1.setVisible(true);
                timer.setRepeats(false);
            }
           
            if(e.getSource()== buttonPlay){
                 timer.start();
                 timer.setRepeats(true);
                bild1.setVisible(false);
            }
           
            bild2.setIcon(new ImageIcon("img/timer" + ziffer + ".jpg"));
//            timerZahlen = new ImageIcon(getClass().getResource("timer" + ziffer + ".jpg"));
           
            ziffer = ziffer -1;
           
            if( ziffer == -1){
                ziffer = 10;
                ziffer = ziffer -1;
            }
        }
       
    }

    public static void main(String[] args) {
        Main frame = new Main();
        frame.setTitle("main");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1500, 600);
        frame.getContentPane().setLayout(null);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.getContentPane().setBackground(new Color(0, 0, 0));
    }
}
 
K

kneitzel

Gast
Also erst einmal eine einfach gehaltene, allgemeine Erklärung:

Wenn Du das Bild aus dem Jar File laden willst, dann geht das auch nicht über die normalen File System Aufrufe. Statt dessen gibt es die getResource und getResourceAsStream Aufrufe in der Class und der ClassLoader Klasse.

Der Unterschied zwischen den beiden Versionen ist der Startpunkt bei relativen Pfaden: Class startet bei der Klasse und der ClassLoader startet direkt auf dem ClassPath / dem Start der JAR Datei. (Denn du den Pfad absolut angibst, dann ist es aber egal, was Du nutzt).

Der Unterschied zwischen getResource und getResourceAsStrem ist, dass ersteres eine URL zurück gibt, mit der nachfolgender Code dann umgehen können muss und letzteres liefert einen Stream, der ganz normal wie jeder Stream verarbeitet werden kann.

Zu Deinem Code:

Somit sieht Dein Code erst einmal relativ gut aus. Du hast einen relativen Pfad angegeben, daher werden Deine Bilder direkt bei der Klasse gesucht in de/main/java - liegen da im Jar auch Deine Bilder?
Du kannst ja mal in der jar Datei nachsehen.

Also wenn ich da Deinen normalen Aufruf sehe, dann würde ich ein /img/timer/... erwarten.
 

silson

Aktives Mitglied
habe jetzt die zeile
timerZahlen = new ImageIcon(getClass().getResource("timer" + ziffer + ".jpg"));
zu der zeile geändert
timerZahlen = new ImageIcon(getClass().getClassLoader().getResource("timer" + ziffer + ".jpg"));
also ClassLoader geht auch nicht!

ich weiss das man es mit getResourceAsStream und mit bufferedImage irgendwie machen kann,
aber da ich anfänger bin verstehe ich nur bahnhof...
da sind immer so viele zeilen im code wenn man hier was liest und ich weiss nicht welche ich davon gebrauchen kann...könnte mir einer einen code schreiben...nur für ein bild, den rest werde ich mir hoffentlich selber zusammen würfeln können.

ja habe ein img-ordner und da die timerbilder drin
 
K

kneitzel

Gast
Daher meinte ich ja, dass ich da ein "/img/timer" erwarten würde. Also etwas in der Art:
Code:
timerZahlen = new ImageIcon(getClass().getResource("/img/timer" + ziffer + ".jpg"));

Und da Du hier keinen relativen Pfad mehr hast, ist es egal, ob Du das auf Class oder ClassLoader aufrufst.

Das ist wie auf dem Filesystem auch - Du bist in einem Verzeichnis. Wenn Du aus genau diesem Verzeichnis eine Datei öffnen willst, dann kannst Du direkt den Filenamen aufrufen. Ansonsten kannst Du Verzeichnisse wechseln. (So müsste bei Dir ein "../../../img/timer" + ziffer + ".jpg" auch funktionieren, wenn Du die Class zum laden der Resource nutzt.)
Oder Du gibst den absoluten Pfad ein. Auf Dateisystemebene ist das dann ein /home/someuser/documents/" oder "C:\temp" - in deinem Fall mit der Resource ist es "/img/timer" + ....
 

silson

Aktives Mitglied
habe die timerbilder auch in den anderen ordner kopiert, wo die buttonbilder sind geht aber auch nicht.
oder haben wir uns missverstanden.
aber eigentlich ist es doch das selbe oder nicht.
oder hat das was mit dem timer zu tun warum das da nicht funktioniert.
aber die buttonbilder funktionieren ja.
und die timerbilder nur wenn ich nen img ordner mache. ansonsten nicht.
komisch oder?

hier mal die ansicht wo ich sie reingeladen habe.
upload_2016-3-27_17-36-18.png
 
K

kneitzel

Gast
Wenn Du die da mit rein kopierst, dann sollte er die auch ohne /img/ vor dem timer laden, so Du das getResource der Klasse nutzt.
Aber im Code sehe ich jetzt noch das getClassLoader(),getRessource() was dann nicht bei der Klasse schaut und vor dem timer hast Du ein / was dann auch falsch wäre.
 

silson

Aktives Mitglied
habe sie jetzt so wie ich es eigentlich für richtig halte geschrieben, aber da passiert nix, kein runterzählen und keine fehler meldung...
sag ja verstehe das nicht. habe erst gedacht das ich nen schreibfehler habe aber auch nicht.
Code:
package de.main.java;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;



public class Main extends JFrame {
   
   
    public final static int SHOW_TIME_PER_SLIDE = 600;
   
    Timer timer = new Timer(SHOW_TIME_PER_SLIDE, new ButtonHaendler());
   
    JLabel bild1;
    Icon textPause;
   
    JLabel bild2;
    Icon timerZahlen;
   
    JButton buttonPause;
   
    JButton buttonPlay;
   
   
    public Main(){
       
        Icon a = new ImageIcon(getClass().getResource("button pause orange.jpg"));
        Icon b = new ImageIcon(getClass().getResource("button pause blau.jpg"));
        buttonPause = new JButton("", a);
        buttonPause.setRolloverIcon(b);
        buttonPause.setBounds(750, 20, 59, 84);
        buttonPause.setBorder(null);
        buttonPause.addActionListener(new ButtonHaendler());
        add(buttonPause);
       
        Icon c = new ImageIcon(getClass().getResource("button play orange.jpg"));
        Icon d = new ImageIcon(getClass().getResource("button play blau.jpg"));
        buttonPlay = new JButton("", c);
        buttonPlay.setRolloverIcon(d);
        buttonPlay.setBounds(650, 20, 75, 84);
        buttonPlay.setBorder(null);
        buttonPlay.addActionListener(new ButtonHaendler());
        add(buttonPlay);
       
        textPause = new ImageIcon(getClass().getResource("text pause.png"));
        bild1 = new JLabel(textPause);
        bild1.setBounds(150, 180, 1205, 284);
        bild1.setVisible(false);
        add(bild1);
       
        timerZahlen = new ImageIcon(getClass().getResource("timer9.jpg"));
        bild2 = new JLabel(timerZahlen);
        bild2.setBounds(620, 120, 225, 400);
        add(bild2);
    }
   
   
    class ButtonHaendler implements ActionListener{
       
        int ziffer = 9;

        @Override
        public void actionPerformed(ActionEvent e) {
           
            if(e.getSource()== buttonPause){
                bild1.setVisible(true);
                timer.setRepeats(false);
            }
           
            if(e.getSource()== buttonPlay){
                 timer.start();
                 timer.setRepeats(true);
                bild1.setVisible(false);
            }
           
            timerZahlen = new ImageIcon(getClass().getResource("timer" + ziffer + ".jpg"));
           
            ziffer = ziffer -1;
           
            if( ziffer == -1){
                ziffer = 10;
                ziffer = ziffer -1;
            }
        }
       
    }

    public static void main(String[] args) {
        Main frame = new Main();
        frame.setTitle("main");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1500, 600);
        frame.getContentPane().setLayout(null);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.getContentPane().setBackground(new Color(0, 0, 0));
    }
}
 
K

kneitzel

Gast
Ok, das Laden der Bilder ist also nicht mehr das Problem. Was ich jetzt sehe ist, dass Du in dem ButtonHaendler zwar das Bild lädst, aber Du zeigst es nicht an.
Du müsstest also noch auf dem Label ein setIcon(timerZahlen) aufrufen.
 
K

kneitzel

Gast
Code:
@Override
public void actionPerformed(ActionEvent e) {

    if(e.getSource()== buttonPause){
        bild1.setVisible(true);
        timer.setRepeats(false);
    }

    if(e.getSource()== buttonPlay){
        timer.start();
        timer.setRepeats(true);
        bild1.setVisible(false);
    }

    // Hier erstellst Du ein neues ImageIcon. Dieses zeigst Du aber nicht an!
    timerZahlen = new ImageIcon(getClass().getResource("timer" + ziffer + ".jpg"));

    // Wenn Du es anzeigen willst, könntest Du z.B.
    bild2.setIcon(timerZahlen);
    // machen. 
    
    ziffer = ziffer -1;

    if( ziffer == -1){
        ziffer = 10;
        ziffer = ziffer -1;
    }
 

silson

Aktives Mitglied
kneizel, hat funktioniert!!!
ich weiss zwar nicht warum ich die eine zeile noch schreiben musste, aber es klappt und ich bin happy.:)
danke:D
 
K

kneitzel

Gast
Also das Wieso in einfachen Worten:
Du hast einen Platz an der Wand für ein Bild (nennen wir mal bild2).
Dann beschaffst Du Dir ein neues Bild (timerZahlen = new ImageIcon(....);)
Damit das Bild an der Wand hängt musst Du es aber noch aufhängen. Einfach nur ein neues Bild zu kaufen reicht nicht aus, damit es dann bei Dir an der Wand hängt (und zwar genau an dem Platz, an dem Du es haben willst.)
Das Aufhängen erfolgt dann somit mit dem bild2.setImage(timerZahlen);

Das um es einfach umgangssprachlich zu erläutern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Erste Schritte Buffered Image splitten und darstellen Java Basics - Anfänger-Themen 2
F Buffered Image über Socket versenden Java Basics - Anfänger-Themen 6
B polyline auf buffered image malen Java Basics - Anfänger-Themen 2
P Buffered Image, Bereich ausschneiden Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
L buffered reader produziert zu viele und seltsame zeichen Java Basics - Anfänger-Themen 2
V Buffered Reader, erst ab bestimmter Zeile auslesen? Java Basics - Anfänger-Themen 8
K Probleme mit Buffered Reader Java Basics - Anfänger-Themen 8
I Buffered Images vergleichen Java Basics - Anfänger-Themen 3
P Buffered Reader an Anfang setzen Java Basics - Anfänger-Themen 4
F Was gibt der Buffered Reader zurück bei Dateiende? Java Basics - Anfänger-Themen 2
H Buffered Reader Java Basics - Anfänger-Themen 7
G Buffered REader, String, ist mein code korrekt? Java Basics - Anfänger-Themen 4
G mit Buffered Writer innerhalb einer Datei Zeilen etc. einfüg Java Basics - Anfänger-Themen 4
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
B Image Matching in Memory Minigame Java Basics - Anfänger-Themen 7
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
T Image Icon Java Basics - Anfänger-Themen 3
K File (png) in Image laden Java Basics - Anfänger-Themen 3
M Image löschen Java Basics - Anfänger-Themen 2
G Image in Vordergrund Java Basics - Anfänger-Themen 3
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
H Image laden Java Basics - Anfänger-Themen 4
R Image drehen Java Basics - Anfänger-Themen 1
R Image Teilen Java Basics - Anfänger-Themen 3
B Image laden im GridBagLayout Java Basics - Anfänger-Themen 3
N Image von Resource wird nicht geladen Java Basics - Anfänger-Themen 2
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
F Image wird nicht gezeichent?! Java Basics - Anfänger-Themen 21
N Hintergrund image mit .setContentPane Java Basics - Anfänger-Themen 6
W aus Methode auf JLabel zugreifen und Image verändern Java Basics - Anfänger-Themen 1
V Scale displayed Image via JCheckBox Java Basics - Anfänger-Themen 1
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
S Image nach MausMotion rotieren Java Basics - Anfänger-Themen 7
L Erste Schritte Java Image und Video-Slideshow GUI Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
S Image in Panel laden Java Basics - Anfänger-Themen 12
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
V Image Crawler Java Basics - Anfänger-Themen 3
P Erste Schritte Image anzeigen in ausführbarer jar mit der Toolkit class Java Basics - Anfänger-Themen 8
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
A Image (Bitmap) in String (für XML) Java Basics - Anfänger-Themen 7
T Image ist Null - warum? Java Basics - Anfänger-Themen 18
V Image -> 2D Array (int [][]) Java Basics - Anfänger-Themen 4
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
V FileInputStream auf ein swt.Image Java Basics - Anfänger-Themen 6
A Wie kann man etwas von Typ Image wieder löschen? Java Basics - Anfänger-Themen 7
F Image übertragen und zeichnen Java Basics - Anfänger-Themen 8
G Problem mit Image.IO.read( File ) Java Basics - Anfänger-Themen 3
G Image spiegeln Java Basics - Anfänger-Themen 17
Y Trotz add wird Image in GradBagLayout nicht angezeigt Java Basics - Anfänger-Themen 5
Spin Image helper Java Basics - Anfänger-Themen 6
M Image Metadaten setzen Java Basics - Anfänger-Themen 2
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
C Image draw... Java Basics - Anfänger-Themen 7
M Image-Icon Ändern Java Basics - Anfänger-Themen 15
J Image upload auf ImageShack,TinyPic usw. Java Basics - Anfänger-Themen 11
R Image laden die Zweite Java Basics - Anfänger-Themen 4
R Image laden Java Basics - Anfänger-Themen 10
M Image zeichenen mit Double Werten Java Basics - Anfänger-Themen 4
G Image to File Java Basics - Anfänger-Themen 4
T Image Position erkennen Java Basics - Anfänger-Themen 6
Spin Image skalieren Java Basics - Anfänger-Themen 2
Spin Background Image Java Basics - Anfänger-Themen 2
K Image / drawImage Java Basics - Anfänger-Themen 2
F Image Editor Java Basics - Anfänger-Themen 2
R Image aus jar laden (dieses mal awt) Java Basics - Anfänger-Themen 19
B Image flimmert Java Basics - Anfänger-Themen 4
Povlsen84 Image exakt erzeugen Java Basics - Anfänger-Themen 5
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
X ARGB Werte auslesen aus Image Java Basics - Anfänger-Themen 2
O Image Loader laedt bild nicht Java Basics - Anfänger-Themen 11
H String to image! Java Basics - Anfänger-Themen 6
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
M Probleme mit Manifest und Image Java Basics - Anfänger-Themen 2
T Java Bilderverwaltung - Image Fetcher Problem Java Basics - Anfänger-Themen 4
E Image in Datei speichern bzw anzeigen Java Basics - Anfänger-Themen 5
G Image laden Java Basics - Anfänger-Themen 16
O Drag & Drop mit Image? Java Basics - Anfänger-Themen 2
G Image/-Icon wird nicht auf JPanel angezeigt Java Basics - Anfänger-Themen 4
M Image aus JPanel Java Basics - Anfänger-Themen 2
G Kompletten (image) Array löschen Java Basics - Anfänger-Themen 14
P Fileinputstream to image? Java Basics - Anfänger-Themen 3
G Image Problem Java Basics - Anfänger-Themen 5
G Image Java Basics - Anfänger-Themen 3
M draw.Image Java Basics - Anfänger-Themen 11
O Image laden Java Basics - Anfänger-Themen 6
G Image Java Basics - Anfänger-Themen 2
S Image-Datei mit relativem Pfad angeben Java Basics - Anfänger-Themen 3
S Botton und Image kombinieren Java Basics - Anfänger-Themen 3
S import javax.image.io.*; funktioniert nicht Java Basics - Anfänger-Themen 28
D Image drehen Java Basics - Anfänger-Themen 6
DeeDee0815 Uncaught error fetching image Java Basics - Anfänger-Themen 2
A Image erstellen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben