Dynamische Bilder erzeugen?

Status
Nicht offen für weitere Antworten.

Fats

Bekanntes Mitglied
Hallo zusammen!

Sagt mal, wie kann ich mit Java dynamische Bilder (Gif, JPG, PNG) erzeugen? Ich gehe mal davon aus, daß Java das kann! ;) Bei PHP gibt es die gd-lib (ich hoffe, ich hab den Namen jetzt richtig behalten?!) und soetwas muß es doch auch bei Java geben?! Irgendwelche Image-Classes scheint es ja zu geben, aber ich steige noch nicht ganz durch, wofür und ob man was davon gebrauchen kann ...

Ziel ist es auf einer Website Text als Grafik auszugeben. Die Texte sollen in einer bestimmten Font und Farbe dargestellt werden. Ich stell mir das so vor, daß ich ein <img> Tag nehme und dort als src den Namen eines JSPs eintrage und über Parameter ansteuer. In etwa derart:



In der image.jsp werden die Paremeter abgefragt, ein Image erzeugt, Schriftart geladen, Text positioniert, eingefärbt, etc. und das ganze mit "verbogenem" header("Content-type: image/png") zurück gegeben.

Nett wäre auch, wenn man vorhandene Bilder einladen und ggf. stauchen kann.

Hat da jemand eine Idee, wie das geht?

Vieel Grüße und besten Dank für Hilfe
Fats
 

Illuvatar

Top Contributor
Paar Stichwörter:

- java.awt.image.BufferedImage
- Image#getGraphics
- java.awt.Graphics2D
- javax.imageio.*
 

The_S

Top Contributor
Und ein kleiner Sample-Code:

Code:
BufferedImage img = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
g2d.setColor(Color.red);
g2d.drawString("Hello World", 20, 150);
g2d.dispose();
ImageIO.write(img, "png", "HelloWorld.png");
 

Fats

Bekanntes Mitglied
Hey! Vielen Dank! Das sieht doch sehr gut aus! Hab mir Die zugehörigen Klassen mal angesehen und den Code (erstmal theoretisch) nachvollzogen! Hab soweit wohl verstanden, wie es funktioniert. Zwei Fragen hab ich allerdings noch:

a) Die ganzen Formatierung (color, font, etc.) nimmt man ja am Graphics2D Objekt vor. Auf welche Art hängt denn das Objekt noch mit dem eigentlichen Image-Objekt zusammen? Dieses Image-Objekt wird ja nachher der write-Methode der ImageIO-Klasse übergeben. Irgendwie muß das ja wohl funktionieren ...

b) Wie bekomme ich es hin, daß ich den Header des übergeordneten JSP so verbiegen kann, daß es von aussen wie ein PNG, GIF oder ein JPG aussieht? Ich will in diesem Fall die erstelllte Grafik nicht im Filesystem speichern, sondern direkt an den Server als Image liefern. In PHP gab es dafür damals die header-Funktion. Das wird doch in Java auch klappen, oder ;) vermutlich wird man dann auch noch den Aufruf der Methode ImageIO.write() etwas modifizieren müssen. Aber wie?

Vielen Dank und beste Grüße
Fats
 

Illuvatar

Top Contributor
a) Die Graphics2D, die du von dem Bild kriegst, sind sozusagen das Mittel, um etwas auf das Image zu zeichnen. Wenn du Graphics2D#drawString aufrufst, wird das Image-Objekt intern verändert.

b) Ich hab noch nie was mit JSP gemacht ;) Aber ich gehe davon aus, dass es irgendeine Funktion gibt, die dem PHP-header() entspricht - dann kannst du ja einfach zuerst diese Funktion aufrufen, und danach das Bild in den Ausgabe-Stream. Das geht so afaik nicht mit der Klasse ImageIO, da brauchst du dann wohl ein javax.imageio.ImageOutputStream.
 

EgonOlsen

Bekanntes Mitglied
write(...) kann auch in einen OutputStream schreiben. Den bekommst du in der jsp-Seite problemlos. Du musst nur aufpassen, dass die Seite selber keine großen Umbrüche oder so enthält (im Code natürlich schon, aber drum herum nicht), weil die bei JSP auch in den Stream gekloppt werden. Ein Servlet zum Erzeugen des Bildes ist eleganter.
 

Fats

Bekanntes Mitglied
EgonOlsen hat gesagt.:
write(...) kann auch in einen OutputStream schreiben. Den bekommst du in der jsp-Seite problemlos. Du musst nur aufpassen, dass die Seite selber keine großen Umbrüche oder so enthält (im Code natürlich schon, aber drum herum nicht), weil die bei JSP auch in den Stream gekloppt werden. Ein Servlet zum Erzeugen des Bildes ist eleganter.
Huii .... ich hatte es schon fast geahnt, daß mir jemand ein Servlet zu schreiben nahelegen würde ;) Ich hab nur noch nie (bewußt) ein Servlet geschrieben ???:L Ein Haufen Klassen, die ich in JSPs eingebunden habe, ist kein Problem, aber wie sind die Formalitäten für ein Servlet? OK, die Frage ist hier in der Grafik-Rubrik glaub ich etwas fehl am Platze ;)
Also Step 1) Servlet beibringen, 2) etwas mit dem OutputStream kuscheln, 3) probieren und 4) ggf. nochmal hier melden :cool:

Bis hierher auf jedenfall schonmal vielen Dank!
Fats :)
 

Fats

Bekanntes Mitglied
Nur mal ne Kleinigkeit der Vollständigkeit halber :

Hobbit_Im_Blutrausch hat gesagt.:
Und ein kleiner Sample-Code:

Code:
BufferedImage img = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
g2d.setColor(Color.red);
g2d.drawString("Hello World", 20, 150);
g2d.dispose();
ImageIO.write(img, "png", "HelloWorld.png");

Die letzte Zeile (6) muß heissen:

Code:
ImageIO.write(img, "png", new File("HelloWorld.png"));

Viele Grüße
Fats :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M [J3D]Dynamische Erzeugung vom Objekt Box Spiele- und Multimedia-Programmierung 5
V Java2D dynamische Kurven Spiele- und Multimedia-Programmierung 3
M Bilder werden unscharf angezeigt Spiele- und Multimedia-Programmierung 5
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
beatles Minesweeper - keine Bilder Spiele- und Multimedia-Programmierung 3
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
O Bilder senden TV über DLNA? Spiele- und Multimedia-Programmierung 0
T Bilder Elegant darstellen... Spiele- und Multimedia-Programmierung 7
T Bilder einbinden, bzw. ändern Spiele- und Multimedia-Programmierung 5
M Bilder effizient speichern/serialisieren Spiele- und Multimedia-Programmierung 10
M Bilder in Java Spiele- und Multimedia-Programmierung 7
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
B Bilder in GUI ändern ohne repaint() Spiele- und Multimedia-Programmierung 6
T Spielautomat bilder vergleichen Spiele- und Multimedia-Programmierung 34
A Bilder werden nicht geladen Spiele- und Multimedia-Programmierung 6
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
A Bilder (auf JPanels) auf komplette Zellengröße (GridBagLayout) skalieren Spiele- und Multimedia-Programmierung 2
I Bilder aus Quaxli's Tutorial Spiele- und Multimedia-Programmierung 3
A bilder performant und unhässlich skalliert darstellen? Spiele- und Multimedia-Programmierung 10
A 2 Bilder übereinander legen Spiele- und Multimedia-Programmierung 15
J 2D-Bilder in Java3D Spiele- und Multimedia-Programmierung 4
A Bilder(BMP) speichern Spiele- und Multimedia-Programmierung 2
S Bilder zuscheiden - Werte von php übergeben Spiele- und Multimedia-Programmierung 7
D Bilder besser interpolieren Spiele- und Multimedia-Programmierung 4
R Bilder aus animierter .gif extrahieren? Spiele- und Multimedia-Programmierung 4
C jpg.Bilder teilen/bearbeiten für Puzzle Spiele- und Multimedia-Programmierung 7
A Bilder bewegen Spiele- und Multimedia-Programmierung 2
M Bilder verzerren [Rechteck -> Trapez] Spiele- und Multimedia-Programmierung 4
K Bilder drehen Spiele- und Multimedia-Programmierung 5
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
H Bilder speichern Spiele- und Multimedia-Programmierung 3
A Bilder flackern Spiele- und Multimedia-Programmierung 5
T Gekachelte Bilder darstellen Spiele- und Multimedia-Programmierung 2
E Vector Feld erzeugen Spiele- und Multimedia-Programmierung 3
J Wie kann man eine grafische Oberfläche erzeugen um eine Textdatei auswählen zu können ?? Spiele- und Multimedia-Programmierung 1
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
R LWJGL: Textur -> unsichtbare Stellen, wie erzeugen? Spiele- und Multimedia-Programmierung 4
L Slick-Image aus byte-array erzeugen Spiele- und Multimedia-Programmierung 2
G Schachbrett mit AWT erzeugen Spiele- und Multimedia-Programmierung 16
S Umfang eines Polygons erzeugen Spiele- und Multimedia-Programmierung 1
N Zufällige Spiellandschaft erzeugen Spiele- und Multimedia-Programmierung 7
S Java3D - mehrere Instanzen eines Geometrieobjektes erzeugen Spiele- und Multimedia-Programmierung 3
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
A Box-ähnliches Gebilde erzeugen Spiele- und Multimedia-Programmierung 11
D J3D Neuling: Crosshair erzeugen und anzeigen! Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben