Stretch Image in ImageView

SyntaxTalksToMe

Bekanntes Mitglied
Nabend,

mein Projekt ist fast fertig und bin grad am Feintuning. Ich möchte das bestimmte Images, die verschiedene Größen haben, über die Fläche eines ImageViews gestretched werden.

Ich habe schon viele Dinge probiert. Manche waren vielversprechender als andere. Unter anderem hatte ich probiert mit:

Das vielversprechendste war mit:

Code:
imageView.setFitWidth(width);
imageView.setHeight(height);

Allerdings passen da die X und Y Werte nicht. Das heißt das Image hat zwar augenscheinlich(!) die richtige Größe, ist aber versetzt. Bevor ich jetzt groß etwas eigenes mache, wie das BufferedImage zu resizen ect, gibt es vielleicht einen einfachen Weg, einfach das Bild auf die größe des ImageViews zu stretchen? Wenn die Ratio dabei nicht 100% passt, ist das nicht so schlimm.

Ich habe wirklich viele verschiende Sachen ausprobiert. U.a.

-das image als AnchorPane background genutzt,
-das Buffered Image resized
-ImageView
-BackgroundImages erstellt

Aber alles hatte nicht wirklich funktioniert.
 
Nabend,

mein Projekt ist fast fertig und bin grad am Feintuning. Ich möchte das bestimmte Images, die verschiedene Größen haben, über die Fläche eines ImageViews gestretched werden.

Ich habe schon viele Dinge probiert. Manche waren vielversprechender als andere. Unter anderem hatte ich probiert mit:

Das vielversprechendste war mit:

Code:
imageView.setFitWidth(width);
imageView.setHeight(height);

Allerdings passen da die X und Y Werte nicht. Das heißt das Image hat zwar augenscheinlich(!) die richtige Größe, ist aber versetzt. Bevor ich jetzt groß etwas eigenes mache, wie das BufferedImage zu resizen ect, gibt es vielleicht einen einfachen Weg, einfach das Bild auf die größe des ImageViews zu stretchen? Wenn die Ratio dabei nicht 100% passt, ist das nicht so schlimm.

Ich habe wirklich viele verschiende Sachen ausprobiert. U.a.

-das image als AnchorPane background genutzt,
-das Buffered Image resized
-ImageView
-BackgroundImages erstellt

Aber alles hatte nicht wirklich funktioniert.

Edit: In FXML hab ich es auch versucht mittels eines Styles. Da kann man auch Stretch einstellen. Aber das zeigte leider keine Wirkung
 
?!?!??!?!?!
Ja.. du hast recht. Das sieht tatsächlich ganz gut aus...
Das hatte ich schon längst getan. Das Image hat sogar die richtige Größe. Allerdings der Nebeneffekt ist, dass bei jedem Bild das in das View geladen wird, der Pivotpunkt wo anders zu sein scheint.Alle Bilder haben zwar wie gesagt die gleiche Größe, aber jedes Bild scheint einem anderen PivotPunkt innerhalb des ImageViews zu haben.
Und genau das verstehe ich nicht, warum das so passiert.
 
Proportional stretchen geht mit net.imagej (IJ) so: ( https://mvnrepository.com/artifact/net.imagej/ij/1.52i )
Java:
	public static void scale(ImagePlus ip, float f) {
		ImageProcessor ipro = ip.getProcessor();
		ipro = ipro.resize((int) (ipro.getWidth() * f));
		ip.setProcessor(ipro);
	}

Ausschneiden geht so:
Java:
	public static void crop(ImagePlus ip, int x, int y, int w, int h) {
		ImageProcessor ipro = ip.getProcessor();
		ipro.setRoi(x, y, w, h);
		ipro = ipro.crop();
		ip.setProcessor(ipro);
	}

(Konvertieren geht so🙂
Java:
	public static void convertToGray8(ImagePlus ip) {
		ImageConverter ic = new ImageConverter(ip);
		ic.convertToGray8();
	}

Das erscheint mir die einfachste Art, dass resize zu erreichen.

Die unter der Haube schlummernden Algorithmen sind nicht ganz trivial...
 

Neue Themen


Zurück
Oben