Image zu BufferedImage konvertieren

Kampfzwereg

Bekanntes Mitglied
Hallo,

habe im Internet ein Beispiel zum Konvertieren eines Images in ein BufferedImage gefunden. Es funktioniert auch, jedoch bin ich mir nicht ganz sicher wie genau das geht.
Könnte mir einer mal kurz erklären was genau da abläuft.
Hier der Quellcode

Java:
 public BufferedImage gibAusBufferedImage()
   {
        FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
        buffer = fgc.grabFrame();
        btoi = new BufferToImage((VideoFormat) buffer.getFormat());
        img = btoi.createImage(buffer);
        Label myLabel = new Label();
        int width = img.getWidth(myLabel);
        int height = img.getHeight(myLabel);
        BufferedImage bImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        bImage.getGraphics().drawImage(img, 0, 0, myLabel);
        return bImage;
       
   }

Außerdem ist diese Zeile
Java:
int width = img.getWidth(myLabel);
glaub ich immer null. Und ich weiß leider nicht warum -.-' .

P.S.: Die ersten paar Zeilen gehörten noch zum Catchen des Images.

Hoffe schnell Antworten zu bekommen

LG
 

XHelp

Top Contributor
Eine Zeile kann nicht "null" sein. Das Ergebnis kann ebenfalls nicht
Code:
null
sein, da es ein
Code:
int
ist. Deswegen habe ich keine Ahnung was du damit meinst.
Für deine Frage ist ja im großen und ganzen nur Zeile 10 und 11 relevant. Da wird ein BufferedImage-Objekt erstellt (einzelheiten dazu in der Api) und dein gewünschtes Bild darauf gemalt (einzelheiten dazu in der Api).
 

Kampfzwereg

Bekanntes Mitglied
jedenfalls kommt da immer ne nullpointer exception in Zeile 8. Und Image.getWidth() gibt glaube ich null zurück. Also muss mit myLabel was nicht stimmen, weil getWidth() nur null zurüclgibt, wenn mit dem übergebenen Label was nicht stimmt. Abver ich weiß halt nicht was ...
 

XHelp

Top Contributor
Wenn da NPE fliegt, dann ist
Code:
img
null. Warum das so ist steht ggf in der API von JMF, womit ich selber nicht gearbeitet habe.
 

HimBromBeere

Top Contributor
Also muss mit myLabel was nicht stimmen
Nö, daran liegt´s schonmal nicht, da kannste sicher sein, denn
Java:
Label myLabel = new Label();
sorgt dafür, dass da zumindest schonmal irgendwas drin steckt (ansonsten bekommst du auch dort eine Exception und nicht erst in Zeile 8).

Wo die NPE herkommt, musst du - wie XHelp schon sagte - mal in der API zu
Code:
createImage
nachschauen.
 

Marco13

Top Contributor
Ja, da steht AFAIR dass da halt das Video-Format nicht passt (das war kürzlich erst.... und eine Forensuche nach z.B: "BufferToImage" liefert auch einige Threads vom TO...)
 

Nardian

Bekanntes Mitglied
Mal ne blöde idee, aber wieso erstellt du ein neues Label?
Wenn du das Bild einfach nur kopieren willst, versuchs doch mal mit

Java:
int width = img.getWidth(null);
int height = img.getHeight(null);
BufferedImage bImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bImage.getGraphics().drawImage(img, 0, 0, null);

soweit ich mich richtig erinnere hats bei mir so immer funktioniert.

Lg
 
S

Spacerat

Gast
Warum denn einfach, wenn's auch umständlich geht? XD
Hatte irgend wann mal so 'nen unheimlich abgespeckten (passend für eine statische Methode) MediaTracker gebaut und der funzt auch prächtig. Vor allem dann, wenn man nicht unbedingt immer RGB- oder ARGB-Bildtypen wie z.B. GIF hat.
Java:
	public static BufferedImage waitForLoading(Image source)
	{
		if(source instanceof BufferedImage) {
			return (BufferedImage) source;
		}
		final Object[] obj = new Object[2];
		ImageConsumer ic = new ImageConsumer()
		{
			private int width, height;

			public void setProperties(Hashtable<?, ?> props)
			{
			}
			
			public void setPixels(int x, int y, int w, int h, ColorModel model,	int[] pixels, int off, int scansize)
			{
				((WritableRaster) obj[1]).setDataElements(x, y, w, h, pixels);
			}
			
			public void setPixels(int x, int y, int w, int h, ColorModel model,	byte[] pixels, int off, int scansize)
			{
				((WritableRaster) obj[1]).setDataElements(x, y, w, h, pixels);
			}
			
			public void setHints(int hintflags)
			{
			}
			
			public void setDimensions(int width, int height)
			{
				this.width = width;
				this.height = height;
			}
			
			public void setColorModel(ColorModel model)
			{
				obj[0] = model;
				obj[1] = model.createCompatibleWritableRaster(width, height);
			}
			
			public void imageComplete(int status)
			{
				synchronized(this) {
					notify();
				}
			}
		};
		source.getSource().startProduction(ic);
		synchronized(ic) {
			try {
				ic.wait();
			} catch(InterruptedException e) {
				// ignore
			}
		}
		ColorModel cm = (ColorModel) obj[0];
		WritableRaster wr = (WritableRaster) obj[1];
		return new BufferedImage(cm, wr, cm.isAlphaPremultiplied(), null);
	}
[EDIT]Im übrigen muss vor der Verwendung von "<Image>.getWidth(ImageObserver obs)" bzw. "<Image>.getHeight(ImageObserver obs)" das Image auch bereits vollständig geladen sein (evtl. per MediaTracker), sonst bekommt man dort -1 zurück und "new BufferedImage(width, height, type)" scheitert.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F BufferedImage -> Image Allgemeine Java-Themen 4
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
J jsch direktes streamen in ein image Allgemeine Java-Themen 11
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T 2D-Grafik Chart als Image erstellen Allgemeine Java-Themen 3
G Image in Shape wandeln Allgemeine Java-Themen 1
T Swing Image rotieren Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
C pfad vom Image ausgeben lassen Allgemeine Java-Themen 5
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
M Image auslesen Allgemeine Java-Themen 2
G Pixelanzahl aus Raw Image Datei Allgemeine Java-Themen 1
H OCR und Image Processing Allgemeine Java-Themen 4
M Image für PDF nicht verfügbar - Runnable .jar Allgemeine Java-Themen 3
S BLOB Image in JSP anzeigen Allgemeine Java-Themen 5
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
K Image beim catchen ist immer null Allgemeine Java-Themen 9
X Image Processing libary für JavaSE und Android Allgemeine Java-Themen 2
Crashbreaker RCP-View Image öffnen und darstellen Allgemeine Java-Themen 7
S IMAGE ARRAY laden Allgemeine Java-Themen 6
B Image oder GridControl? Allgemeine Java-Themen 8
B Image Thinning Allgemeine Java-Themen 3
A Input/Output Buffered Image zu Byte Array und zurück konvertieren Allgemeine Java-Themen 4
F Datentypen Floppy-Image-Dateisystem Allgemeine Java-Themen 5
F Image - Ausschnitt bekommen Allgemeine Java-Themen 3
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
N Unable to convolve src image Allgemeine Java-Themen 7
H image in jtextarea/JLabel einbinden... Allgemeine Java-Themen 4
Aigu Bilderkennung / Image Analysis Allgemeine Java-Themen 2
M Nochmal I-Frame zu Image Allgemeine Java-Themen 4
M JPEG Image komprimieren Allgemeine Java-Themen 2
M Probleme mit Image Extraction aus PDF Allgemeine Java-Themen 2
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
G sun.awt.image.OffScreenImage Serializable machen Allgemeine Java-Themen 5
T Image in gif umwandeln Allgemeine Java-Themen 14
G itext größe von image Allgemeine Java-Themen 2
T JPanel to Image? Allgemeine Java-Themen 6
K Image Resizer Allgemeine Java-Themen 4
D Image runterscalieren, aber schlechte Quali? Allgemeine Java-Themen 3
L Buffered Image teilweise zeichnen Allgemeine Java-Themen 6
P Image erzeugen Allgemeine Java-Themen 7
B Image libraries Allgemeine Java-Themen 3
MQue Image über Komponente Allgemeine Java-Themen 3
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
E Image unterscheiden Allgemeine Java-Themen 16
E Image auf einem JLabel darstellen Allgemeine Java-Themen 3
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
T Muster/Zeichen/Texterkennung auf einem Image Allgemeine Java-Themen 9
L Linien, Recktecke und Elipsen zeichnen ohne Image Allgemeine Java-Themen 2
T Disk Image Library (iso,mdf,nrg,bin) Allgemeine Java-Themen 6
S KeyListener! Image Problem! Allgemeine Java-Themen 2
S Image als Background Allgemeine Java-Themen 5
B Image(png) versenden Allgemeine Java-Themen 3
N Image -> cropImage Allgemeine Java-Themen 3
T Image mithilfe von DirectColorModel und Pixel erstellen Allgemeine Java-Themen 3
G Image in der Größe ändern Allgemeine Java-Themen 2
C probleme mit image Allgemeine Java-Themen 4
C Pixelfarbe aus einem image auslesen Allgemeine Java-Themen 6
M Image Skalieren Allgemeine Java-Themen 23
D ByteArray für Image-Icon laden. Allgemeine Java-Themen 4
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
O Image mit transparenten farben wie bei *.GIF ? Allgemeine Java-Themen 3
B Image#getScaledInstance & Graphics2D#drawImage ClassCast Allgemeine Java-Themen 3
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
T Auf ein Image geklickt Allgemeine Java-Themen 13
J ISO image erzeugen Allgemeine Java-Themen 3
J Wie mache ich den Hintergrund einer Image durchsichtig? Allgemeine Java-Themen 7
G Aus JPanel Image Hohlen Allgemeine Java-Themen 3
D BufferedReader in image umwandeln Allgemeine Java-Themen 3
S Image Datei serializieren Allgemeine Java-Themen 3
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
F Image als GIF oder JPEG abspeichern Allgemeine Java-Themen 2
D BufferedImage resize Allgemeine Java-Themen 16
RalleYTN JOGL Texture in BufferedImage konvertieren Allgemeine Java-Themen 1
M Input/Output BufferedImage vertauscht width und height Allgemeine Java-Themen 6
G BufferedImage und ByteArray Allgemeine Java-Themen 2
P Threads BufferedImage, Thread Concurrency Allgemeine Java-Themen 1
M Problem mit BufferedImage und PrinterJob im Querformat Allgemeine Java-Themen 1
T BufferedImage verändert sich beim Einlsesen Allgemeine Java-Themen 1
M BufferedImage toString() überschreiben Allgemeine Java-Themen 5
Thallius PDF von einem BufferedImage erstellen Allgemeine Java-Themen 1
S BufferedImage vergleich mit Subimage Allgemeine Java-Themen 1
reibi OutOfMemoryError bei Behandlung von BufferedImage's Allgemeine Java-Themen 6
TheSorm BufferedImage spiegeln Allgemeine Java-Themen 3
A BufferedImage einzelne Pixel transparent machen V2.0 Allgemeine Java-Themen 2
S Undoable BufferedImage? Allgemeine Java-Themen 2
lumo 2D-Grafik BufferedImage und operationen darauf Allgemeine Java-Themen 2
H BufferedImage Invertieren Allgemeine Java-Themen 13
D md5 berechnen für BufferedImage Allgemeine Java-Themen 5
D BufferedImage rotieren Allgemeine Java-Themen 8
TiME-SPLiNTER Binary BufferedImage automatisch croppen Allgemeine Java-Themen 4
F byte[] aus einem BufferedImage Allgemeine Java-Themen 3
0 BufferedImage - Farbton verändern Allgemeine Java-Themen 5
J BufferedImage aus PNG Files haben keinen Type Allgemeine Java-Themen 4
T umwandeln BufferedImage to File Allgemeine Java-Themen 7
reibi BufferedImage nach InputStream Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben