2D-Grafik drawString (scharf zeichnen lassen)

Fireball

Aktives Mitglied
Hallo zusammen,

mir ist was aufgefallen das ich gerne ändern wollen würde.

ich schreiben/mahle in ein BufferedImage mit drawString einen Text

Code:
BufferedImage bi = new BufferedImage(1240, 1748,
				BufferedImage.TYPE_INT_RGB );

		Graphics2D g = (Graphics2D) bi.getGraphics();
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
		g.setColor(Color.BLACK);

		g.drawString("TEST", 90, 30);

Wenn ich das ganze in schwarz/weiß dann ausdrucke ist die Schrift schön scharf. Wenn ich aber einen Farbausdruck mache dann sieht man so ein leichtes krieseln. Also feine Pixel zwischen den Buchstaben. Was muss ich machen damit das nicht mehr der Fall ist wenn ich etwas in Farbe drucken?

Bei einem Image ist das auch der Fall, will das aber auch nicht haben.

Danke
 

ARadauer

Top Contributor
Graphics2D g = (Graphics2D) bi.getGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
..

hilft das?
 

Wildcard

Top Contributor
Es wäre besser wenn du
1) Den Text direkt an den Printer sendest anstatt über ein Image zu gehen
2) Ein PDF erzeugst

Der Drucker löst viel höher auf als die 72 dpi des Graphics Context, daher muss beim Drucken interpoliert werden wenn der Text kein Text mehr ist, sondern ein Bild.
 

Fireball

Aktives Mitglied
Leider muss das ein Bild mit Daten werden.

Ich hab mir schon überlegt etwas zu schreiben das die Pixelfarbe analysiert und wenn eine bestimmte Graustufe erreicht ist soll er durch weis ersetzt werden. Ich müsste 50% des Bildes analysieren.

Jedoch weis ich nicht genau wie ich das genau anstellen soll.

Hab gehofft das es bereits etwas gibt was genau das bewerkstelligt.
 

Fireball

Aktives Mitglied
Ja die Kombi hab ich ebenfalls probiert. Hat nichts geändert.

Über das ColorModel hab ich noch garnicht nachgedacht, jedoch wird das mir auch nicht helfen.

Ich zeichne oben die Strings und weiter unten kommt dann ein Bild (das in Farbe sein soll).
 

Marco13

Top Contributor
Das sieht SO stark nach JPG-Kompressionsartefakten aus, dass ich, obwohl es hier ein PNG ist, fragen muss: Wie speicherst du das ganze denn dann ab? Oder schickst du es irgendwie direkt an den Drucker?
 

Fireball

Aktives Mitglied
Das Bild speichere ich so ab:

ImageIO.write(bi, "jpeg", new File("bild.jpg"));

Kann man diese Kompressionsartefakte umgehen?? Das Bild sollte halt zwischen 200 - 270 kb bleiben und nicht paar MB annehmen.
 

Marco13

Top Contributor
Ja, als JPG gibt es (speziell bei Text) solche Artefakte, und das läßt sich kaum vermeiden. Man kann zwar (ziemlich umständlich) die Qualität auf sowas wie 99% hochschrauben, aber dann wird die Datei sehr groß (Wie groß (in Pixeln) ist das Bild denn?).

Einfache Lösung: Speichere es doch als PNG !?
 

Fireball

Aktives Mitglied
Hab die Lösung gefunden, google hilft :)

Code:
        Iterator iterator = ImageIO.getImageWritersBySuffix("jpeg");
        ImageWriter imageWriter = (ImageWriter) iterator.next();
        JPEGImageWriteParam imageWriteParam = new JPEGImageWriteParam(Locale
                .getDefault());
        imageWriteParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
        imageWriteParam.setCompressionQuality(0.95F);
        IIOImage iioImage = new IIOImage(bi, null, null);
        try {
			imageWriter.setOutput(ImageIO.createImageOutputStream(new File(
			        "C://test.jpg")));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        try {
			imageWriter.write(null, iioImage, imageWriteParam);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Es lag wohl wirklich an der Default Compression, bei 0.5f kann man die feinen Pixel noch sehen bei 0.95f ist alles weg und absolut scharf.

Leider ist es aber so das zwar das Bild jetzt "Perfekt" ist aber bei einem Farbdruck kann man immer noch leicht das krieseln sehen. Lässt sich wohl nicht vermeiden.

Brauch das Bild in JPG.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Drucken drawString(); Allgemeine Java-Themen 1
S drawString rechtsbündig? Allgemeine Java-Themen 6
J Drucken mit drawString() und Zeilenumbruch Allgemeine Java-Themen 3
S Graphics! drawstring Allgemeine Java-Themen 4
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
F Linie zeichnen Allgemeine Java-Themen 35
I Raute mit Rekursion "zeichnen" Allgemeine Java-Themen 7
P Zeichnen Allgemeine Java-Themen 18
S Best Practice Diagramm zeichnen Allgemeine Java-Themen 0
C Tortendiagramm zeichnen Allgemeine Java-Themen 3
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
D Baum zeichnen hilfe Allgemeine Java-Themen 4
B Zeichnen einer verschiebbaren Linie Allgemeine Java-Themen 3
I 2D-Grafik Polygon mit Double Werten zeichnen Allgemeine Java-Themen 4
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
E Tool/Programm zum Zeichnen von UML Diagrammen Allgemeine Java-Themen 14
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
D Lösung Differentialgl. mit RungeKutta + Kurve zeichnen Allgemeine Java-Themen 3
U Zeichnen mit JFrame. Allgemeine Java-Themen 5
lenniii zeichnen Allgemeine Java-Themen 2
N Tepich zeichnen Allgemeine Java-Themen 8
K Zeichnen auf ein Bild und Scrollen Allgemeine Java-Themen 7
S Problem mit Zeichnen Allgemeine Java-Themen 8
L Buffered Image teilweise zeichnen Allgemeine Java-Themen 6
B Tool zum Zeichnen von Systemarchitektur Allgemeine Java-Themen 2
MasterEvil Lib zum zeichnen von Baumdiagrammen? Allgemeine Java-Themen 4
O TimeSeriesChart Linien Fetter Zeichnen Allgemeine Java-Themen 2
B Programmablaufgraph erstellen und zeichnen Allgemeine Java-Themen 2
H Sinusähnliche Kurve mit Paint zeichnen! Allgemeine Java-Themen 3
G Bild neu zeichnen Allgemeine Java-Themen 13
E Pixelweise auf einem JPanel/JLabel o.ä. zeichnen Allgemeine Java-Themen 4
L Linien, Recktecke und Elipsen zeichnen ohne Image Allgemeine Java-Themen 2
R Grafiken. direkt zeichnen Allgemeine Java-Themen 5
S Auf vorhandenes Window zeichnen? Allgemeine Java-Themen 2
G BufferedImage zeichnen Allgemeine Java-Themen 4
S Vierecke zeichnen Allgemeine Java-Themen 18
T Rechtecke usw mit Paint auf Panel zeichnen Allgemeine Java-Themen 5
G Bilder zeichnen und Zoom Funktion Allgemeine Java-Themen 2
J Fenster mit paint Methode selbst zeichnen Allgemeine Java-Themen 3
A Zeichnen mit JAVA ! Allgemeine Java-Themen 3
T Linien-Diagramm zeichnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben