Habe ein kleines Problem mit der Auflösung von JPEG Bildern. Ganz egal ob ich ein Bild erstelle oder ein Bild lade (300dpI) abgespeichert wird es immer in der Bildschirmauflösung, also mit 72 DPI.
Habs jetzt schon mit AffineTransformation probiert und auch mit der Density beim encoden, aber es funzt einfach nicht.
Das ist in etwa der Code
Vielleicht kann mir da irgendwer weiterhelfen wäre echt super, denn ein 72 dpI Bild sieht beim Drucken echt mies aus
Habs jetzt schon mit AffineTransformation probiert und auch mit der Density beim encoden, aber es funzt einfach nicht.
Das ist in etwa der Code
Code:
// Image erstellen
int scalingFactor = 1;
BufferedImage img = new BufferedImage(340*scalingFactor,340*scalingFactor,BufferedImage.TYPE_INT_RGB);
Graphics2D g2,g = img.createGraphics();
g.setColor(Color.BLACK);
g.setColor(Color.white);
g.fillRect(3*scalingFactor,3*scalingFactor,334*scalingFactor,334*scalingFactor);
/* g.fillRect(0,0,1418,1418);
g.setColor(Color.lightGray);
g.fillRect(0,0,100,100);
g.fillRect(1318,1318,100,100);*/
g.setColor(Color.black);
Font f1 = new Font("Arial",Font.BOLD,24*scalingFactor);
g.setFont(f1);
g.drawString("Arial 24 Bold",10*scalingFactor,50*scalingFactor);
f1 = new Font("Arial",Font.BOLD,12*scalingFactor);
g.setFont(f1);
g.drawString("Arial 12 Bold",10*scalingFactor,100*scalingFactor);
f1 = new Font("Arial",Font.PLAIN,10*scalingFactor);
g.setFont(f1);
g.drawString("Arial 10 Plain",10*scalingFactor,160*scalingFactor);
g.dispose();//von großen bild
Graphics2D gsc;
Image scaled = img.getScaledInstance(340,340,BufferedImage.SCALE_SMOOTH);
BufferedImage biscaled = new BufferedImage(340,340,BufferedImage.TYPE_INT_RGB);
gsc = (Graphics2D)biscaled.getGraphics();
gsc.drawImage(scaled,0,0,this);
gsc.dispose();
// JPEG erstellen
Toolkit tk = Toolkit.getDefaultToolkit();
float quality = (float)1;
ByteArrayOutputStream out = new ByteArrayOutputStream (0xfff);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param,param1;
//param1 = null;
param = encoder.getDefaultJPEGEncodeParam(img);//***
param.setQuality(quality,true);
System.out.println("Dens-Unit: "+param.getDensityUnit()+" x-Dens: "+param.getXDensity()+" y-Dens: "+param.getYDensity());
param.setDensityUnit(0);
param.setXDensity(300);
param.setYDensity(300);
param.setHorizontalSubsampling(3,1);
param.setVerticalSubsampling(3,1);
try{
encoder.encode(img, param);
FileOutputStream fos = new FileOutputStream ("C:\\test.jpg");
fos.write(out.toByteArray());
fos.close();
out.close();
}catch (Exception e2){
}
Vielleicht kann mir da irgendwer weiterhelfen wäre echt super, denn ein 72 dpI Bild sieht beim Drucken echt mies aus