Buggeredimage & pixel HUE/RGB

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo an alle, wollte mal fragen wo ich irgendwelche dokumentation oder howto oder source example finde, in dem zu diesen thema was steht.

was ich brauche ist, auf ein Bufferedimage zu zugreifen, und dann auf jedes pixel in dem image, und von jedem pixel muß ich die HUE und RGB erfahren, dann den pixel schwarzen/HUE verandern und dies ausgeben. Und das mit mindestens 30FPS, deswegen spielt hier große rolle java2D. helft mir bitte. hab den ganzen tag gegoogelt aber nicht wirklich viel gefunden.

die hauptsache ist das ich es nicht kapiere wie ich auf den bestimmtem pixel zugreifen kann, und dann die eigenschaften auslese/schreibe.
 

The_S

Top Contributor
Dei 30FPS werden von der Größe deiner Bilder abhängen. Generell bekommst du eine Pixel-Farbe mit

BufferedImage#getRGB

setzen kannst du ihn dann mit

BufferedImage#setRGB

Über die Klasse Color bekommst du die RGB-Werte. Sollte nicht alzu schwer sein diese dann umzurechnen :) .
 

The_S

Top Contributor
thE_29 hat gesagt.:
Naja, du kriegst aber sich nüscht die Pixelfarbe mit gerRGB vom BufferedImage..

Wo hastn hier den bitte ein Pixel angegeben?

Naja x, y halt. Sollte reichen um die Pixel eines BufferedImages zu bearbeiten ;) .
 
G

Guest

Gast
ich kapiere nich warum der nicht gleich das image anzeigt, erst nach der schfeilfe. kann mir jemand bitte sagen was ich falsch mache.

Code:
                Graphics2D g2D= (Graphics2D) g;
                g2D.setRenderingHint(   RenderingHints.KEY_ANTIALIASING,
                                        RenderingHints.VALUE_ANTIALIAS_ON);

                BufferedImage buffim;
                buffim = new BufferedImage( 300, 300, BufferedImage.TYPE_INT_RGB );
                        try {
                                buffim = ImageIO.read(new File("me.jpg"));
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                g2D.drawImage(buffim,0,0,null);
                for (int i=1;i<=10;i++){
                        buffim.setRGB(10,i,0xFFFFFF);
                        g2D.drawImage(buffim,0,0,null);
                        try {Thread.sleep (500);} catch ( Exception ex ) {ex.printStackTrace();}
                }
das was ich erreichen wil, das ich es sehe wenn der den punkt setzt , sprich die farbe verändert.
 
G

Gast

Gast
wie kann ich das problemm lösen?
PS ich brauche aber das die pause ausgefürt wird?
 

thE_29

Top Contributor
Das ganze in einen eigenen Thread packen!

new Thread(){
public void run()
{
//hier dein Code
}
}.start();
 
G

Guest

Gast
das mit Theards kopiere ich nicht wirklich.

könnte jemand explizit auf meinem beispiel das zeigen ? bitte.
Ich meine was muß ich in ein thread packen?
Code:
import  java.io.*;
import  java.awt.*;
import  java.awt.image.BufferedImage;
import  java.awt.geom.*;
import  javax.swing.*;
import  javax.imageio.*;


class Crimage extends JPanel{
        @Override
        protected void paintComponent (Graphics g){
                Graphics2D g2D= (Graphics2D) g;
                g2D.setRenderingHint(   RenderingHints.KEY_ANTIALIASING,
                                        RenderingHints.VALUE_ANTIALIAS_ON);

                BufferedImage buffim;
                buffim = new BufferedImage( 300, 300, BufferedImage.TYPE_INT_RGB );
                        try {
                                buffim = ImageIO.read(new File("me.jpg"));
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                g2D.drawImage(buffim,0,0,null);
                for (int i=1;i<=10;i++){
                        buffim.setRGB(10,i,0xFFFFFF);
                        g2D.drawImage(buffim,0,0,null);
                        try {Thread.sleep (500);} catch ( Exception ex ) {ex.printStackTrace();}
                }
        }

        public static void main (String[] args){
                JFrame f=new JFrame();
                f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
                f.setSize(300,300);
                f.add(new Crimage());
                f.setVisible(true);
        }
}
 

thE_29

Top Contributor
Hä?!

Wieso schläfst du in der paint Methode?!

Wozu isn das gut? Wieso brauchst du diese Pause?!
 
G

Guest

Gast
so ich glaube langsamm checke ich so bissel, ich hab das hier bissel zusammen gebauet, aber er zeigt mir jetzt nichts mehr an =(

Code:
import	java.io.*;
import	java.awt.*;
import	java.awt.image.BufferedImage;
import	java.awt.geom.*;
import	javax.swing.*;
import	javax.imageio.*;



class Crimage extends JPanel{
	@Override
	protected void paintComponent (Graphics g){
		Graphics2D g2D= (Graphics2D) g;
		g2D.setRenderingHint(	RenderingHints.KEY_ANTIALIASING,
					RenderingHints.VALUE_ANTIALIAS_ON);

		BufferedImage buffim;
		buffim = new BufferedImage( 300, 300, BufferedImage.TYPE_INT_RGB );
			try {
				buffim = ImageIO.read(new File("me.jpg"));
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			ThreadGR zeige;
			zeige = new ThreadGR(g2D,buffim);
			zeige.start();


	}

	public static void main (String[] args){
		JFrame f=new JFrame();
		f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
		f.setSize(300,300);
		f.add(new Crimage());
		f.setVisible(true);
	}
}
class ThreadGR extends Thread{
	Graphics2D g2D;
	BufferedImage bufim;
	
	public ThreadGR (Graphics2D g,BufferedImage bi){
	this.g2D=g;
	this.bufim=bi;
	}
	public void run(){
	for (int i=1;i<=10;i++){
			this.bufim.setRGB(10,i,0xFFFFFF);
			this.g2D.drawImage(bufim,0,0,null);
			try {sleep (500);} catch ( Exception ex ) {ex.printStackTrace();}
			System.out.println("500x"+i);
		}	
}
}

ja genau ich will etwas annimieren =) und das soll ein example für mich werden =).
 

thE_29

Top Contributor
Baa.. dieses unnötig Annotationszeug nervt mich immer elendst wenn ich das im 1.4er kompilieren will..

PFUI Annotationen!!! Wenn sie überhaupt net benutzt werden und nur sinnlos rumstehen!

Ich schau mir das mal an!
 

thE_29

Top Contributor
So hier, ich sehe zwar keine Änderung, deswegen lasse ich es nach rechts verschieben...

Code:
import   java.io.*;
import   java.awt.*;
import   java.awt.image.BufferedImage;
import   java.awt.geom.*;
import   javax.swing.*;
import   javax.imageio.*;


public class Testar extends JPanel{
private int waitCounter = 1;
private int paintCounter = 0;

        protected void paintComponent (Graphics g){
		super.paintComponent(g);
                Graphics2D g2D= (Graphics2D) g;
                g2D.setRenderingHint(   RenderingHints.KEY_ANTIALIASING,
                                        RenderingHints.VALUE_ANTIALIAS_ON);

                BufferedImage buffim;
                buffim = new BufferedImage( 300, 300, BufferedImage.TYPE_INT_RGB );
                        try {
                                buffim = ImageIO.read(new File("C:\\home.gif"));
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                g2D.drawImage(buffim,0,0,null);
				if(paintCounter != waitCounter)
                {
					paintCounter = waitCounter;
					for(int i = 1; i <= paintCounter; i++)
						buffim.setRGB(10,i,0xFFFFFF);
					System.out.println(paintCounter);
                   g2D.drawImage(buffim,paintCounter,0,null);
                }
        }

        public static void main (String[] args){
                JFrame f=new JFrame();
                f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
                f.setSize(300,300);
				final Testar test = new Testar();
                f.add(test);
				new Thread(){
				public void run()
				{
					while(true)
					{try{
					Thread.currentThread().sleep(500);
					test.waitCounter++;
					if(test.waitCounter == 11)
						test.waitCounter = 1;
					test.repaint();
					}catch(Exception ex){}
					}
				}
				}.start();
                f.setVisible(true);
        }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
N Swing GridBagLayout: Ein Pixel Versatz AWT, Swing, JavaFX & SWT 2
D Swing Farbe aus Pixel vom JFrame auslesen AWT, Swing, JavaFX & SWT 17
M Wie ermittele ich die Breite und Höhe meines Displays in Pixel AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Document Text Position in Pixel AWT, Swing, JavaFX & SWT 2
U Pixel zeichnen AWT, Swing, JavaFX & SWT 2
S Pixel im *.Gif ändern AWT, Swing, JavaFX & SWT 2
C AWT: Pixel für Pixel Linien auf Panel zeichnen AWT, Swing, JavaFX & SWT 2
D Pixel in ein Array einlesen AWT, Swing, JavaFX & SWT 2
H Einzelne Pixel auf Transparenz überprüfen? AWT, Swing, JavaFX & SWT 3
F png-Datei erstellen und einzelne Pixel schreiben AWT, Swing, JavaFX & SWT 2
I JScrollPane, wenn JLabels x Pixel erreichen AWT, Swing, JavaFX & SWT 3
K Fontgröße in Pixel angeben AWT, Swing, JavaFX & SWT 5
G Pixel ablaufartig verändern AWT, Swing, JavaFX & SWT 5
R Pixel zeichnen AWT, Swing, JavaFX & SWT 9
D Wie viele Pixel welches Icon? AWT, Swing, JavaFX & SWT 4
B Bild(pixel) füllen AWT, Swing, JavaFX & SWT 6
N Alle Pixel-Koordinaten von z.B. g.drawLine(.) speichern AWT, Swing, JavaFX & SWT 7
B Länge eines Strings in Pixel AWT, Swing, JavaFX & SWT 2
D Zeichen ein Pixel mit Java2D AWT, Swing, JavaFX & SWT 15
T Pixel OS abhängig AWT, Swing, JavaFX & SWT 3
T jedes Pixel aus dem Image (auf dem Panel) auslesen AWT, Swing, JavaFX & SWT 3
N Laenge eines Strings in Pixel AWT, Swing, JavaFX & SWT 2
M Farbe eines Pixel im Image ändern AWT, Swing, JavaFX & SWT 1
Luma Bild Pixel für Pixel auslesen? AWT, Swing, JavaFX & SWT 3
H Pixel zeichnen AWT, Swing, JavaFX & SWT 6
F Pixel Farbe auslesen AWT, Swing, JavaFX & SWT 3
C Image-Pixel manipulieren AWT, Swing, JavaFX & SWT 9
T Pixel nach Farbwert abfragen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben