Iam_Fiction
Mitglied
Hallo ich habe folgendes Problem. Ich erstelle mir aus einer File in Java ein Image. Das resultierende Image möchte ich gerne um 45 ° drehen und dann im Verhältnis 1:0,5 (b:h) skalieren (so dass aus einem anfangs quadratischen Image eine Art Raute entsteht). Ich habe das ganze mit AffineTransform versucht aber irgendwie verhalten sich die Anweisungen nacheinander angewandt eigenartig und ergeben verschiedene Resultate je nach Anwendung. Scheinbar beziehen sie sich auch auf das nicht veränderte Standartimage. Am Ende zB sollte das gedrehte Bild wieder perfekt in ein Image passen was nach meiner Implementierung nicht der Fall ist...
Hier ein Teil meines Versuches...
Im Anhang noch das Image anfangs und das resultierende. Das Ergebnisimage sollte jedoch sauber eingepasst sein am Ende.
Hier ein Teil meines Versuches...
Code:
BufferedImage image = new BufferedImage(700, 350, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform trans = AffineTransform.getScaleInstance(1, 0.5);
trans.rotate(Math.toRadians(-45d), image.getHeight()/2, image.getHeight()/2);
trans.translate(-90, 110);
g2d.transform(trans);
FileInputStream fi;
try {
fi = new FileInputStream("D:\\map.mgx");
byte[] buf = new byte[2];
for (int y = 0; y < 480; y += 4) {
for (int x = 0; x < 480; x += 4) {
if (fi.read(buf) != -1) {
Byte t = new Byte(buf[0]);
int co = t.intValue();
g2d.setColor(terrain[co]);
g2d.fillRect(x, y, 4, 4);
g2d.drawRect(x, y, 4, 4);
}
}
}
return image;
Im Anhang noch das Image anfangs und das resultierende. Das Ergebnisimage sollte jedoch sauber eingepasst sein am Ende.