Hallo liebe Community,
bin momentan grad richtig genervt, dass es in Java so schwierig ist, ein Bild zu skalieren!!
Bin es von C gewohnt, dass ich zwar jedes Pixel anfassen muss, aber dass es wenigstens problemlos funktioniert...
Das Bild von der HD zu laden und anzuzeigen funktioniert einwandfrei, bloss komm ich einfach ums Verrecken nicht auf Höhe und Breite des Bildes!! Habs auch schon mit MediaTrackern probiert, da es scheinbar ein Problem ist, dass ich erst an die Daten komm, wenn das Bild komplett geladen ist.
Geht aber trotzdem nicht... Hoffe ihr könnt mir helfen. Danke schon mal
Hier mal mein bisheriger Code :
Die eigentliche Skalierung passiert in MyCanvas :
Wo is da der Fehler?? Hab auch schon von ein paar Programmierern gelesen, die mit dem Toolkit arbeiten. Was ist da der Unterschied ?? Was wäre zu bevorzugen?
Danke schon mal,
beste Grüße,
Flo
bin momentan grad richtig genervt, dass es in Java so schwierig ist, ein Bild zu skalieren!!
Bin es von C gewohnt, dass ich zwar jedes Pixel anfassen muss, aber dass es wenigstens problemlos funktioniert...
Das Bild von der HD zu laden und anzuzeigen funktioniert einwandfrei, bloss komm ich einfach ums Verrecken nicht auf Höhe und Breite des Bildes!! Habs auch schon mit MediaTrackern probiert, da es scheinbar ein Problem ist, dass ich erst an die Daten komm, wenn das Bild komplett geladen ist.
Geht aber trotzdem nicht... Hoffe ihr könnt mir helfen. Danke schon mal
Hier mal mein bisheriger Code :
Java:
try {
// MyCanvas Definition folgt unten
canvas = new MyCanvas(picpath);
} catch (InterruptedException ex) {
Logger.getLogger(PicTestJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
this.add(canvas);
canvas.setSize(600, 600);
canvas.setLocation(100, 10);
this.repaint();
Die eigentliche Skalierung passiert in MyCanvas :
Java:
public class MyCanvas extends JPanel {
public static int instanceCnt =0;
String filepath;
Image image=null;
public MyCanvas (String _filepath) throws InterruptedException{
this.filepath = _filepath;
float ratio;
try {
image = ImageIO.read(new File(filepath));
} catch (IOException ex) {
Logger.getLogger(MyCanvas.class.getName()).log(Level.SEVERE, null, ex);
}
MediaTracker mTracker = new MediaTracker(this);
mTracker.addImage(image,1);
mTracker.waitForID(1);
if(mTracker.checkAll()){
// Speicher die Proportionalitätskonstante
ratio = image.getHeight(null)/image.getWidth(null);
// Querformat oder Quadratisch
if(ratio <=1.00){
int newHeight = Math.round(image.getWidth(null)/ratio);
image = image.getScaledInstance(600, newHeight, 0);
}else{
int newWidth = Math.round(image.getHeight(null)/ratio);
image = image.getScaledInstance(newWidth, 600, 0);
}
}else{
System.out.println("Fehler");
}
}
@Override
public void paintComponent(Graphics g){
g.drawImage(image, 0, 0,this);
instanceCnt++;
}
}
Wo is da der Fehler?? Hab auch schon von ein paar Programmierern gelesen, die mit dem Toolkit arbeiten. Was ist da der Unterschied ?? Was wäre zu bevorzugen?
Danke schon mal,
beste Grüße,
Flo