Bild aus externer Quelle laden und Skalieren?

florian1x

Aktives Mitglied
Hallo,

ich möchte gerne ein Bild von dem man nur die Adresse ausm netz kennt
in java laden und dann deren Größe anpassen.
dabei sollen die Seitenverhältnisse gleich bleiben.

Kann mir einer sagen wie das geht?
google spuckt mir immer nur

Java:
Image scale = img.getScaledInstance(int width, int height,Image.SCALE_SMOOTH)

aus.

damti weiss ich aber noch net genau was ich machen soll

mit freundlichen Grüßen
Florian
 
getScaledInstance ist unvorteilhaft. Nimm lieber die folgenden Funktionen zum Laden und Skalieren:

Java:
	public static BufferedImage loadImage(String ref, int width, int height) {
		BufferedImage bimg = null;
		try {

			bimg = ImageIO.read(new File(ref));
		} catch (Exception e) {
			System.err.println("Error loading image file " + ref);
			e.printStackTrace();
		}
		return scaleImage(bimg, width, height);
	}

Java:
	/**
	 * Static Method to scale BufferedImage-Object to desired size.
	 * 
	 * @param img
	 *            the image to scale
	 * @param width
	 * @param height
	 * @return the scaled image
	 */
	public static BufferedImage scaleImage(BufferedImage img, int newW, int newH) {
		int w = img.getWidth();
		int h = img.getHeight();
		BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
		Graphics2D g = dimg.createGraphics();
		g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
				RenderingHints.VALUE_INTERPOLATION_BILINEAR);
		g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
		g.dispose();
		return dimg;
	}

P.S.: Die Funktion loadImage lädt Bilder lokal. Um die Datei aus dem Netz abzurufen musst Du es natürlich noch entsprechend abändern.
 
danke ich versuch es gleich mal.

edit: ich merke gerade, dass es nicht das ist was ich suche


also ich habe an meiner Hochschule ein Projekt, in dem eine Website per JSP realisiert werden soll.
Ich habe auf der Website eine Seite, die Bilder enthält und wo ich die Breite Anpassen möchte, sollten die Bilder zu breit sein.
Da die Bilder aber immer recht lange laden, wenn ich lediglich die breite im html-tag angebe, wollte ich sie vorher Serverseitig mit Java verkleinern und erst dann laden lassen.

jemand nen vorschlag?
 
Zuletzt bearbeitet:
Genau das tut der Code von Guybrush Threepwood (bis auf das Speichern halt) 🙂

Da die Bilder aber immer recht lange laden, wenn ich lediglich die breite im html-tag angebe, wollte ich sie vorher Serverseitig mit Java verkleinern und erst dann laden lassen.
Stimmt 😀
Da muss nicht nur das komplette Bild geladen, sondern auch noch vom Browser verkleinert werden.
 
jemand nen vorschlag?

Die Bilder gleich im richtigen Format hochladen? Wenn die Benutzer Bilder hochladen dürfen, dann die maximalgröße vorschreiben und sagen, alles was drüber ist, wird nicht akzeptiert.
Das findet man (z.B. in Foren) häufig, dass der Benutzer sich darum kümmern muss, die Bilder in richtigem Format zu liefern.

Von "Skalier mir die Bilder vor dem Siteaufbau" oder "Skalier mir die Bilder während des Siteaufbaus" halte ich garnix. Wenn man sich soetwas angewöhnt, kommt man iwann mal auf die blöde idee ein 5MP großes bild auf 300x600 runterzuskalieren und wundert sich über das Aussehen und die Ladezeiten des Bildes....

MFG

Tomate_Salat
 
Du kannst auch von jedem Bild das Original und ein Thumbnail speichern. Diese sollten dann aber schon vor dem Seitenaufruf generiert worden sein.
 

Zurück
Oben