Seite 1 von 1

Originalgröße einer über URL geladenen Bilddatei bestimmen - wie?

Verfasst: So, 04.08.2019 23:11
von Reth
Hallo zusammen,

ich versuche das Ganze zwar derzeit in LibreOffice - aber habe das Gefühl, das ist kompatibel.

In Calc lade ich via Macro ein Bild über eine URL und lasse es anzeigen (das Macro ist ein Bsp. aus einem OO-Forum und funktioniert in LO ebenfalls super). Nun benötige ich aber die Größe des Originalbildes um es dementsprechend anzeigen zu können. Kann man diese Werte aus der Bilddatei auslesen (jede Datei .jpg, .png, ... bringt diese Informationen ja mit)?

Vielen Dank schon mal!

Ciao

Re: Originalgröße einer über URL geladenen Bilddatei bestimmen - wie?

Verfasst: Mo, 05.08.2019 09:07
von Toxitom
Hey Reth,

na, wenn Du die URL schon hast.... verwende den Service SimpleFileAccess (com.sun.star.ucb.SimpleFileAccess) und dort dann die Methode getSize(sURL) - liefert Dir die Größe der Datei als long in Byte.

Hilft das?

Gruß
Tom

edit: ich schätze, Du brauchtest gar nicht die Größe der Datei... sondern die Bildgröße in Pixeln? Das wird in Basic sicher nicht einfach werden. Für Python gibt es dafür allerdings Bibliotheken - das ist dann leichter.

Re: Originalgröße einer über URL geladenen Bilddatei bestimmen - wie?

Verfasst: Mo, 05.08.2019 09:39
von Reth
Danke!
Toxitom hat geschrieben: Mo, 05.08.2019 09:07 edit: ich schätze, Du brauchtest gar nicht die Größe der Datei... sondern die Bildgröße in Pixeln?
Korrekt

Re: Originalgröße einer über URL geladenen Bilddatei bestimmen - wie?

Verfasst: Mo, 05.08.2019 10:21
von Stephan
Keine Ahnung wie das direkt geht. Zur Not kannst Du ein Dokument erstellen das Bild einfügen und die Werte auslesen:

Code: Alles auswählen

Sub groesse_bestimmen()
	dok = StarDesktop.loadComponentFromUrl("private:factory/swriter", "_blank", 0, Array())
	
	addr = ConvertToURL("D:\Bild1.jpg")
	
	t_cur = dok.Text.createTextCursor()
	t_cur.gotoStart(False)
	Grafik = dok.createInstance("com.sun.star.text.GraphicObject")
	  
	With Grafik
	    .GraphicURL = addr
	End With
	
	dok.Text.insertTextContent(t_cur, Grafik, False)
	
	Wait 2000
	
	PB = Grafik.Graphic.SizePixel.Width
	PH = Grafik.Graphic.SizePixel.Height
	
	Msgbox "Breite: " & PB & " Pixel" & CHR(13) & "Höhe: " & PH & " Pixel"
End Sub
"Wait 2000" steht dort drin weil LO merklich Zeit braucht um die Grafik im Dokument zu rendern, besser wäre es wohl man fragt den FEhler ab der entsteht wenn "Grafik.Graphic" noch nicht existiert.



Gruß
Stephan