Ich programmiere gerade an einer Bildergallerie. In der lese ich verschiedene Bilder ein. Das aktuelle (bigPic) möchte ich nicht größer als 400 x 400 haben und die kleinen (littlePic[]) nicht größer als 75 x 75. Normalerweiße müsste das doch so gehen:
PHP-Code:
...
mal.bigPic = Toolkit.getDefaultToolkit().getImage(new URL(getCodeBase(), pics.elementAt(0).toString()));
if (mal.bigPic.getWidth(this) > 400 && mal.bigPic.getWidth(this) >= mal.bigPic.getHeight(this)) {
mal.bigPic = mal.bigPic.getScaledInstance(400, (int)(400 / (mal.bigPic.getWidth(this) / mal.bigPic.getHeight(this))), mal.bigPic.SCALE_DEFAULT);
}
else if (mal.bigPic.getHeight(this) > 400 && mal.bigPic.getHeight(this) >= mal.bigPic.getHeight(this)) {
mal.bigPic = mal.bigPic.getScaledInstance((int)(400 / (mal.bigPic.getHeight(this) / mal.bigPic.getWidth(this))), 400, mal.bigPic.SCALE_DEFAULT);
}
for (int i = 0; i < mal.littlePic.length; i++) {
mal.littlePic[i] = Toolkit.getDefaultToolkit().getImage(new URL(getCodeBase(), pics.elementAt(i).toString()));
if (mal.littlePic[i].getWidth(this) > 75 && mal.littlePic[i].getWidth(this) >= mal.littlePic[i].getHeight(this)) {
mal.littlePic[i] = mal.littlePic[i].getScaledInstance(75, (int)(75 / (mal.littlePic[i].getWidth(this) / mal.littlePic[i].getHeight(this))), mal.littlePic[i].SCALE_DEFAULT);
}
else if (mal.littlePic[i].getHeight(this) > 75 && mal.littlePic[i].getHeight(this) >= mal.littlePic[i].getWidth(this)) {
mal.littlePic[i] = mal.littlePic[i].getScaledInstance((int)(75 / (mal.littlePic[i].getHeight(this) / mal.littlePic[i].getWidth(this))), 75, mal.littlePic[i].SCALE_DEFAULT);
}
}
...
Da bekomm ich aber manchmal eine ArithmeticException geworfen (ich teile meiner Ansicht nach aber nirgendwo durch 0) und außerdem sind die Bilder, sobald ihre größe angepasst werden soll entweder 400 x 400 oder 75 x 75 obwohl ich eigentlich möchte, dass nur der Größte Wert (also x oder y) nicht 400 bzw. 75 überschreitet. Wodurch eigentlich eine Auflösung von z. B. 400 x 300 möglich sein sollte. Weiß jemand wo der Fehler in meinem Code liegt?