Habe ein sehr großes prob beim drucken. Mein Code:
Problem:
Wenn ich ein JPEG Bild mit 200 DPI anlege dann muss ich die PrinterResolution auf 368 DPI setzen damit es in der
richtigen Größe ausgedruckt wird.
Verändere ich die Größe des Bildes ändert sich auch wieder die dazugehörige Printer Auflösung
In welchen zusammenhang steht das ganze nun?? Ist 1dot == 1 pixel??
:?:
Code:
void jButton5_actionPerformed(ActionEvent e) {
double auflösung = Integer.parseInt(jTextField1.getText()); // in Pixel/inch
double w = 60; // in mm
double h = 60; // in mm
// Umrechnung von von Weite und Höhe in pixel
int wpx = (int)(w*auflösung/25.4);
int hpx = (int)(h*auflösung/25.4);
// Graphik erzeugen
BufferedImage bImg = new BufferedImage(wpx, hpx, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) bImg.getGraphics();
g2d.setBackground(Color.white);
g2d.fillRect(0,0,wpx,hpx);
g2d.setColor(Color.black);
g2d.fillRect(wpx-10,0,10,10);
g2d.fillRect(wpx-10,hpx-10,10,10);
g2d.fillRect(0,hpx-10,10,10);
g2d.fillRect(0,0,10,10);
g2d.dispose();
// JPEG erstellen
ByteArrayOutputStream out = new ByteArrayOutputStream (0xfff);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param;
param = encoder.getDefaultJPEGEncodeParam(bImg);
/* Auflösung des Bildes setzen */
param.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH); // in dots/inch ??
param.setXDensity((int)auflösung);
param.setYDensity((int)auflösung);
param.setQuality((float)0.5,true);
/* JPEG schreiben */
try{
encoder.encode(bImg, param);
FileOutputStream fos = new FileOutputStream ("C:\\testbild.jpg");
fos.write(out.toByteArray());
fos.close();
out.close();
}catch (Exception e2){
System.out.println(e2.toString());
}
/* Bild drucken */
DocFlavor fl = DocFlavor.INPUT_STREAM.JPEG;
PrintRequestAttributeSet as = new HashPrintRequestAttributeSet();
as.add(MediaSizeName.ISO_A5);
as.add(OrientationRequested.PORTRAIT);
as.add(Chromaticity.MONOCHROME);
int p = Integer.parseInt(jTextField2.getText());
PrinterResolution pr = new PrinterResolution(p, p, ResolutionSyntax.DPI);
as.add(pr);
//as.add(Fidelity.FIDELITY_TRUE);
as.add(PrintQuality.HIGH);
/* Selektierten Drucker einlesen */
PrintService pserv = ps[jComboBox1.getSelectedIndex()];
/* zuvor erstelltes JPEG Bild einlesen */
File fi = new File("C:\\testbild.jpg");
/* PrintJob anlegen */
DocPrintJob printJob = pserv.createPrintJob();
Doc doc = new InputStreamDoc(fi.getAbsolutePath(), fl);
/* Drucken des Bildes */
try{
printJob.print(doc,as);
}catch(Exception e3){
System.out.println("e3: "+e3.toString());
}
}
Problem:
Wenn ich ein JPEG Bild mit 200 DPI anlege dann muss ich die PrinterResolution auf 368 DPI setzen damit es in der
richtigen Größe ausgedruckt wird.
Verändere ich die Größe des Bildes ändert sich auch wieder die dazugehörige Printer Auflösung
In welchen zusammenhang steht das ganze nun?? Ist 1dot == 1 pixel??
:?: