Drucken - Bild skalieren

Status
Nicht offen für weitere Antworten.

SilentJ

Bekanntes Mitglied
Hi,

ich muss noch einen Fehler in meiner Klasse haben, in der ich ein auszudruckendes Bild skaliere. Das Problem ist, dass das Bild immer noch etwas zu groß ist, um komplett gedruckt zu werden, die Seitenränder werden anscheinend noch nicht korrekt berechnet.

Am besten hinterlege ich hier Teile des Codes, bevor ich es noch weiter beschreibe:

Code:
/** Spacer für die Anordnung auf dem Ausdruck */
public final static int SPACER = 3;
[...]

public int print(Graphics graphics, 
			PageFormat pageFormat, int pageIndex)
			throws PrinterException 
	{
		if( 0 != pageIndex ) 
		{
			return NO_SUCH_PAGE;
		}
		// Die Ausgangskoordinaten des Druckbereichs
		int startPositionX=1, startPositionY=1;
		// Skalieren der zulässigen Höhe und Breite des Druckbereichs im
		// Zusammenhang mit dem Auflösungsmultiplikator
		int maxWidth = (int)Math.round( pageFormat.getImageableWidth()  * 
				RESOLUTION_MUL ) - SPACER;
	    int maxHeight = (int)Math.round( pageFormat.getImageableHeight() * 
	    		RESOLUTION_MUL ) - SPACER;
		// Objekt erzeugen, dass den Druck durchführt
	    Graphics2D g2D = (Graphics2D)graphics;
	    // Größe der Druckränder berücksichtigen  / anschl. Auflösung skalieren
	    g2D.translate(pageFormat.getImageableX(),
	    		pageFormat.getImageableY());
	    g2D.scale(1.0/RESOLUTION_MUL, 1.0/RESOLUTION_MUL);
	    // Bild wenn erforderlich skalieren
	    transformImage(maxWidth,maxHeight);
	    AffineTransform at = new AffineTransform();
	    Point point = new Point(0,0);
	    at.translate(point.x, point.y);
	    /* Zeichne das Bild mit folgender AffineTransform-Matrix:
	     * [1	0	0]
	     * [0	1	0]	
	     * [0	0	1]
	     */
	    g2D.drawRenderedImage(image, at);
	    /*System.out.println( "Seite liegt vor.");*/
		return PAGE_EXISTS;
	}
[...]

	/**
	 * Die Methode transformImage prüft zunächst, ob das zu druckende
	 * Bild zu groß für den druckbaren Bereich ist. Ist das der Fall, wird
	 * das Bild skaliert. 
	 * @param maxWidth max. Breite des druckbaren Bereichs
	 * @param maxHeight max. Höhe des druckbaren Bereichs
	 */
	private void transformImage(int maxWidth, int maxHeight) 
	{
		if( image.getWidth()>maxWidth || image.getHeight()>maxHeight )
		{
			double scaleFactor =	((double)maxWidth) / 
			    ((double)image.getWidth());
			// Skalierungsfaktor ist hier noch viel zu genau, auf 2
			// Nachkommastellen runden.
			scaleFactor = Math.rint(scaleFactor*100)/100.0;
			// So viel Speicher wie möglich für die Transformation bereitstellen
			System.gc();
			// Transformation durchführen.
			System.out.println("Skalierungsfaktor:" + scaleFactor);
			ParameterBlock pb = new ParameterBlock();
	        pb.addSource(image);
	        pb.add( (float)scaleFactor );
	 		pb.add( (float)scaleFactor );
	 		pb.add(0.0f);
	 		pb.add(0.0f);
	 		pb.add(new InterpolationNearest());
	 		// PlanarImage aus den im Parameterblock enthaltenen Werten
	 		// erzeugen.
	        image = JAI.create("scale", pb);
		}
	}

Danke für eure Hilfe und Zeit vorab! :wink:
 

SilentJ

Bekanntes Mitglied
Habe den Fehler gefunden,

die Quotienten Bildbreite zu Druckbereichsbreite und BildHöhe zu Druckbereichsbreite habe ich nicht korrekt berücksichtigt. Der kleinere Quotient muss natürlich gewählt werden. Sorry! Mein Fehler.
 

qpid

Mitglied
Bitte Thema gelöst Funktion nutzen: Findet sich unten links in der Ecke beim Betrachten des Themas. (kleiner Hacken)

mfg qpid
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ein Bild aus einem Panel drucken? AWT, Swing, JavaFX & SWT 11
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
L Charset beim Drucken falsch AWT, Swing, JavaFX & SWT 2
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
O JTable linksbündig drucken (nicht der Zelleninhalt) AWT, Swing, JavaFX & SWT 2
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
F AWT Drucken verschluckt inhalt AWT, Swing, JavaFX & SWT 1
S JTable im Hoch- und Querformat angepasst drucken AWT, Swing, JavaFX & SWT 1
kaoZ JFrame Drucken AWT, Swing, JavaFX & SWT 8
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
Z Drucken AWT, Swing, JavaFX & SWT 2
A Swing Drucken eines JTextPanes AWT, Swing, JavaFX & SWT 7
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
C Swing Drucken von JPanel AWT, Swing, JavaFX & SWT 14
E Drucken von JPanel mit richtiger Skalierung AWT, Swing, JavaFX & SWT 5
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S AWT Drucken aus bestimmtem Papierfach AWT, Swing, JavaFX & SWT 7
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
M Swing JTable drucken/Darstellung AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
W AWT Drucken ohne Druckdialog AWT, Swing, JavaFX & SWT 2
O JTable mit Inhalt drucken AWT, Swing, JavaFX & SWT 3
C Swing Briefe/Dokumente zum Drucken erstellen AWT, Swing, JavaFX & SWT 20
D Drucken eines "Formulars" in abgeänderter Form AWT, Swing, JavaFX & SWT 5
P Jpanel mit Komponenten drucken AWT, Swing, JavaFX & SWT 3
T Drucken eines JFrame AWT, Swing, JavaFX & SWT 2
H AWT Oberer Seitenrand kann beim Drucken vom Anwender nicht verstellen werden. AWT, Swing, JavaFX & SWT 6
P Drucken von Jtextpane mit Seitenangabe AWT, Swing, JavaFX & SWT 1
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
D Vorabberatung :) Briefe gestalten und drucken (als PDF) AWT, Swing, JavaFX & SWT 3
N Nur ein Element sichtbar beim Drucken eines JFrame AWT, Swing, JavaFX & SWT 9
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
N JTable: Drucken mit größerer RowHeight AWT, Swing, JavaFX & SWT 2
N JPanel nicht ganz drucken AWT, Swing, JavaFX & SWT 2
A Probleme mit dem Drucken AWT, Swing, JavaFX & SWT 2
K Seite zum drucken einrichten AWT, Swing, JavaFX & SWT 2
F Drucken in Java AWT, Swing, JavaFX & SWT 3
A Problem mit der Seiteneinrichtung beim Drucken AWT, Swing, JavaFX & SWT 7
A Drucken einer JList AWT, Swing, JavaFX & SWT 4
C JTable drucken AWT, Swing, JavaFX & SWT 7
O Panel drucken AWT, Swing, JavaFX & SWT 2
Y Problem beim Drucken AWT, Swing, JavaFX & SWT 2
A Drucken AWT, Swing, JavaFX & SWT 23
H JTable drucken mit Header AWT, Swing, JavaFX & SWT 4
& XHTML drucken mit (oder ohne) Flying Saucer AWT, Swing, JavaFX & SWT 12
C Fenster rücken beim Drucken in den Hintergrund AWT, Swing, JavaFX & SWT 6
& mehrseitige HTML-Dokumente drucken AWT, Swing, JavaFX & SWT 2
ARadauer jtable drucken unter java 1.3 AWT, Swing, JavaFX & SWT 2
B Unsichtbares JPanel drucken. AWT, Swing, JavaFX & SWT 14
C Text drucken? AWT, Swing, JavaFX & SWT 2
V Drucken in Java AWT, Swing, JavaFX & SWT 2
K Drucken von JTextComponenten AWT, Swing, JavaFX & SWT 2
R Drucken unter jdk 1.4 mit JTable AWT, Swing, JavaFX & SWT 11
B Ein großes JTextPane komplett drucken AWT, Swing, JavaFX & SWT 2
I Drucken: Programm stürzt bei AWT, Swing, JavaFX & SWT 7
I Fensterinhalt drucken AWT, Swing, JavaFX & SWT 2
E Drucken von JComponent. AWT, Swing, JavaFX & SWT 4
F Transparent bzw. transfluent(durscheinend) drucken? AWT, Swing, JavaFX & SWT 2
P Idee zum drucken von JTextField und JTable AWT, Swing, JavaFX & SWT 2
O JTable, mehrere Spalten drucken AWT, Swing, JavaFX & SWT 4
orenishii mehrseitig Images anzeigen und drucken SimpleBook.java AWT, Swing, JavaFX & SWT 5
R JPanel drucken AWT, Swing, JavaFX & SWT 5
foobar JTable im Hintergrund drucken AWT, Swing, JavaFX & SWT 2
S JAI und das praktische Drucken AWT, Swing, JavaFX & SWT 4
S Drucken AWT, Swing, JavaFX & SWT 15
S JTable - Drucken AWT, Swing, JavaFX & SWT 10
G HTML aus JEditorPane drucken AWT, Swing, JavaFX & SWT 2
G JPanel drucken AWT, Swing, JavaFX & SWT 2
B componente drucken AWT, Swing, JavaFX & SWT 3
G Frage zum Drucken AWT, Swing, JavaFX & SWT 2
V Problem beim drucken AWT, Swing, JavaFX & SWT 4
L swing komponenten Drucken AWT, Swing, JavaFX & SWT 7
G JTextPane drucken AWT, Swing, JavaFX & SWT 2
S Drucken eines Panels AWT, Swing, JavaFX & SWT 3
T JEditorPane-content drucken AWT, Swing, JavaFX & SWT 2
T Drucken des Inhaltes einer JTextArea AWT, Swing, JavaFX & SWT 4
J JTextArea drucken AWT, Swing, JavaFX & SWT 4
@ Erzeugen einer Maske zum drucken AWT, Swing, JavaFX & SWT 2
G Drucken?? AWT, Swing, JavaFX & SWT 4
H JTable drucken AWT, Swing, JavaFX & SWT 4
K JPanel drucken AWT, Swing, JavaFX & SWT 4
P JTable drucken AWT, Swing, JavaFX & SWT 2
B JPanel Drucken AWT, Swing, JavaFX & SWT 1
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben