# Bilder laden, spiechern & vergrößern/verkleinern



## diventy (29. April 2011)

guten Tag^^,

Ich habe jetzt schon in Google gesucht und forumsbeträge durchwälzt aber da waren entweder keine Erklärungen bei, umständlich formuliert oder nur eine zeile quelltext mit der ich nicht viel anfangen konnte deswegen wollte ich fragen  ob mir jemand zu den unterpunkten ein konkretetes Beispiel geben  kann oder ansätze liefern wenn man das mit einen buffered Image] machen möchte. 

Mein Vorhaben ist eine Bildanzeige zu programmieren, die das geladene Bild anzeigt und 
-verkleinern oder vergrößern​-das den Pfad und Namen des Bildes aus einer Textbox einließt und lädt​-das den Pfad und Namen des Bildes aus einer Textbox einließt und abspeichert​jeder der 3 Unterpunkte soll über einen button realisiert werden

ich Danke jetzt schonmal wenn ihr mir weiterhelfen könntet


----------



## SE (30. April 2011)

Also für das Scaling gibt es die Klasse AffineTransform im Paket java.awt.geom
Die API-Doc dazu liefert dir alle nötigen Informationen.
Die anderen beiden Punkte sind simple Logik- und I/O-Operationen. Die bedürfen eigentlich keiner großen Erklärung sondern lassen sich mit Hilfe der API-Doc und Google lösen.


----------



## Technoblade (30. April 2011)

Also für das Laden und speichern empfehle ich dir wärmsten die Klasse JFileChooser. Damit lässt sich komfortabel umgehen und er bietet dir sogar noch mehr als du benötigst. Der löst für dich das mit dem laden und speichern.

Das Problem mit dem BIlder skalieren hatte ich vor kurzem auch, als ich einen Haufen von Bildern hatte und zu faul war die alle per Hand zu skalieren.

Da bietet sich folgendes Vorgehen an:
-Laden des Bildes als BufferedImage mit mit der Klasse ImageIO.
-skalieren des Bildes über die Methode getScaledInstance der Klasse Image von der BufferedImage erbt.

An dieser Stelle wird es ein wenig umständädnlich, da das ImageIO nur RenderedImages speichert, das was dir getScaledInstance zurückgibtallerdings genau das nicht ist.

Daher legst du an dieser stelle ein neues BufferedImage an, dass die größe des SkaliertenBildes hat und malst darauf dann das skalierte bild. das sieht dann ca. so aus:


```
BufferedImage imageToSave = new BufferedImage(scaledImage.getWidth(), scaledImage.getHeight(), BufferedImage.TYPE_INT_RGB);

imageToSave.getGraphics().drawImage(scaledImage, 0, 0, null);
ImageIO.wirte(imageToSave, "jpg", new File("scaledImage.jpg"));
```


----------



## SE (30. April 2011)

@Technoblade
Was bitte nimmt dir JFileChooser in Punkto Laden und Speichern ab ? Es ist Lediglich ein modaler JDialog der dir die Navigation durchs Filesystem erleichtert weil er es graphisch darstellt. Alles was dann nach der Auswahl des Files geschehen soll musst du trotzdem alles selbst programmieren. Darum sagte ich ja : das sind simple I/O-Operationen die man mithilfe der Doc und Google lösen kann. JFileChooser legt lediglich ne graphische Oberfläche drüber.


----------



## Technoblade (30. April 2011)

Ja, insofern nimmt er einem nichts ab. Aber es erspart einem die Arbeit extra Felder und Buttons dafür anzulegen.

das waren ja auch zwei entscheidende Punkte bei ihm:



> -das den Pfad und Namen des Bildes aus einer Textbox einließt und lädt
> 
> -das den Pfad und Namen des Bildes aus einer Textbox einließt und abspeichert


----------



## SE (30. April 2011)

Achso ... ja .. stimmt .. ich sollte nächste mal vielleicht deinen Post ZWEIMAL lesen ... dann würde ich auch mal verstehen WARUM du es so geschrieben hast ... wieder n Punkt für dich *verdammt .. schon 0:2 für dich*.
Da haste natürlich recht. Zu mal man mit dem JFileChooser auch so schöne Dinge bauen kannst wie ein JTextField und daneben ein JButton mit drei Punkten wie man es von Windows kennt. Die Logik dahinter muss man zwar trotzdem noch selber machen, aber wenigstens die graphische Darstellung wird einem abgenommen.


----------

