You are not logged in.

double

Trainee

  • "double" is male
  • "double" started this thread

Posts: 43

Date of registration: May 12th 2004

Location: Barsinghausen

1

Thursday, April 13th 2006, 9:11pm

Screenshot aus Java3D heraus?

Hi!

Vielleicht kennt ihr ja dieses Problem:

Ich möchte die von Java3D auf den Bildschirm gezeichnete Grafik
pixelweise auswerten.
Nun brauche ich z.B. die Information welchen Farbwert (RGB)
der Pixel bei den Bildschirmkoordinaten (100, 230) besitzt.

Gibt es vielleicht eine Möglichkeit die Ausgabe vom Bildschirm
in eine Datei umzulenken, quasi einen Screenshot zu erstellen?

Wer weiß wie ich an die Pixel ran komme?

CrissCross

Erfahrener Schreiberling

  • "CrissCross" is male

Posts: 282

Date of registration: Feb 15th 2005

2

Friday, April 14th 2006, 2:22am

Funktioniert ALT+Druck da nicht?
"Technology is easy - people are hard."

(John Gage - Sun Microsystems zum Thema warum IT-Projekte scheitern)

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

3

Friday, April 14th 2006, 10:02am

Quoted

Original von CrissCross
Funktioniert ALT+Druck da nicht?

Ich glaube, er möchte mit seinem Programm direkt auf das Bild zugreifen können...mh, ist aber eigentlich keine schleche Idee, dadurch landet die Grafik in der Zwischenablage. Fragt sich nur, ob jedes Betriebssystem so etwas unterstützt...falls das so ist, kann man bestimmt auch vom Javaprogramm aus den Befehl zum Kopieren des Bildschirminhalts in die Zwischenablage anstoßen, und diesen danach auslesen.

This post has been edited 2 times, last edit by "DrChaotica" (Apr 14th 2006, 10:04am)


double

Trainee

  • "double" is male
  • "double" started this thread

Posts: 43

Date of registration: May 12th 2004

Location: Barsinghausen

4

Friday, April 14th 2006, 10:40am

Quoted

Ich glaube, er möchte mit seinem Programm direkt auf das Bild zugreifen können


Genau!
Ich bin an den Farbinformation der Pixel interessiert, daher
möchte ich entweder:

1) AUS dem Java-Programm eine mit Java3D gezeichnete Grafik
als Bitmap in eine Datei schreiben --> screenshot.bmp
Diese Datei kann ich dann "weiterverarbeiten"

oder:

2) Direkt aus dem Programm ein Bitmap ("Bildschirmfoto") /
Bildschirm.getPixelAt(200, 100) / " MemoryImageObject" / ... /
erzeugen damit ich an die Pixel ran komme

Hoffe ich konnte es diesmal verständlicher erklären

This post has been edited 1 times, last edit by "double" (Apr 14th 2006, 10:42am)


Hogi

Trainee

  • "Hogi" is male

Posts: 69

Date of registration: Oct 8th 2003

Location: Rinteln

5

Friday, April 14th 2006, 12:50pm

bei java3d zeichnest du ja immer auf einem Canvas3D, diese klasse ist entfernt abgeleitet von Component und hier gibt es die methode createImage(int width, int height), die dir ein Image-objekt zurückgibt (das hoffentlich, ich weiß es nicht mehr so genau, eben dem inhalt der Component entspricht)... dieses kannst du dann weiterverarbeiten...

rad

Praktikant

  • "rad" is male

Posts: 14

Date of registration: Apr 14th 2004

6

Sunday, April 16th 2006, 11:12pm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;


public class Screenshot
{
	public static BufferedImage getScreenshot()
	{
		BufferedImage ret = null;

		Toolkit toolkit = Toolkit.getDefaultToolkit();
		Dimension screenSize = toolkit.getScreenSize();
		Rectangle screenRectangle = new Rectangle(screenSize);
		
		try
		{
			Robot robot = new Robot();
			ret = robot.createScreenCapture(screenRectangle);
			
			return ret;
		}
		catch (AWTException e)
		{
			return null;
		}
	}
}


[URL=http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/BufferedImage.html#getRGB(int, int)]http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/BufferedImage.html#getRGB(int, int)[/URL]