Folgendes Problem:
Eine Datei wird in einem Makro aus einem Template geladen. Dieses Template verfügt über mehrere teils ineinanderverschachtelte Textframes.
Der Zugriff und die Veränderungen funktionieren, Werte aus einem Dialog werden in die einzelnen Frames eintragen.
In einem Frame soll nun eine Grafik eingebunden werden, die automatisch aktualisiert wird. Das zugrundeliegende Bild ist in einem ungünstigen Webcam Format.
Das Bild soll nun automatisch zugeschnitten werden so dass ein Teil der linken Seite wegfällt, das ganze in einem anderen Format erscheint und aktualisiert wird.
Bisher verläuft dieses Zuschneiden extern über Scripte, das ist etwas umständlich weil das jedesmal ausgelöst werden musss, ich würde es gerne aus OpenOffice heraus realisieren.
Ich weiß, dass es beim Einfügen eines Bildes in ein Frame im interaktiven Programm die Option des Zuschneidens gibt. Nur leider hilft mr das wenig, denn das Bild wird nicht automatisch aktualisiert, im Gegensatz zu einer Einbindung des Bildes als ein Sub-TextFrame mit Hintergrund, was mich wiederum der Fähigkeit beraubt das Bild zuzuschneiden.
Besteht eine Möglichkeit ein solches Vorhaben* überhaupt mit Starbasicbefehlen zu realisieren?
*Das Einbinden eine Bildes in ein Textframe mit Zuschnitt
(oder das Erzwingen eines Neuladen des Bildes in einem Template ohne das Zuschnitt zu verändern)
Hat jemand eine Idee? Ich bedanke mich für jeden Vorschläge.
Mit freundlichen Grüßen
Georg
Bild mit Starbasic automatisch zuschneiden und einbinden?
Moderator: Moderatoren
-
- Beiträge: 2
- Registriert: So, 09.04.2006 19:14
-
- Beiträge: 2
- Registriert: So, 09.04.2006 19:14
Ich hab eine Lösung mir selbst erstellt, die zumindestens so funktioniert das der rechte Teil des Bildes abgeschnitten wird. Ich stelle sie deswegen hier hinein, weil ich persönlich es hasse, endlich in Foren genau auf mein Problem zu gestossen zu sein, aber keine Lösung angeboten wird.
Im Template wird im Rahmen genau an der Stelle an die das Bild soll ein neuer leerer Rahmen in der späteren Größe eingeführt. Der darf ein anders Format haben, zum Beispiel 3:3, oder 3:4. Je schmaler der Rahmen wird, destoweniger ist vom Originalbild zu sehen, das muss klar sein. Wichtig ist das die spätere Höhe im Quelltext exakt mit der Rahmengröße zusammenfällt, ausserdem sollte man die Umradung im Rahmen auf Null stellen.
Hier nun die Codeschnippsel:
Die Übergabe des oDoc als Parameter ist deshalb notwendig weil im Original der Aufruf von einer anderen Stelle erfolgt.
Das Bild wird nun links on die obere Ecke des Rahmen geheftet und der Rest der nach rechts über den Rahmen hinausragt wird nicht mehr angezeigt.
Ich weiß leider nicht, ob es auch die Möglichkeit gibt das Bild mit der rechten oberen Ecke rechts an den Rahmen zu heften, so dass der linke Rand nicht mehr dargestellt wird, weil er dann links aus dem Rahmen herausragt, vielleicht über Properties die die das Bild rechtsbündig einbinden. Vielleicht weiss jemand anders da mehr.
Ich selbst verwende diese Technik in einem Projekt in der Ausweise gedruckt werden und die Fotos von einer Webcam stammen.
So nun hab ich mir einen Kaffee verdient.
Mit freundlichen Grüßen
Georg
Im Template wird im Rahmen genau an der Stelle an die das Bild soll ein neuer leerer Rahmen in der späteren Größe eingeführt. Der darf ein anders Format haben, zum Beispiel 3:3, oder 3:4. Je schmaler der Rahmen wird, destoweniger ist vom Originalbild zu sehen, das muss klar sein. Wichtig ist das die spätere Höhe im Quelltext exakt mit der Rahmengröße zusammenfällt, ausserdem sollte man die Umradung im Rahmen auf Null stellen.
Hier nun die Codeschnippsel:
Code: Alles auswählen
'Hier der Testaufruf
Sub TestLadeBildinTextFrame
Dim odoc
oDoc = StarDesktop.CurrentComponent
BildinTextFrameLaden odoc, "tfBild1"
BildinTextFrameLaden odoc, "tfBild2"
End Sub
Sub BildinTextFrameLaden(oDoc, sFrameName As String)
Dim oCursor, oGraphic, oText, oTextFrames, oTextFrame
'Vom übergebenen Dokument die Liste aller Textframes holen
oTextFrames=oDoc().getTextFrames()
'Das entsprechende TextFrame anhand des Namens identifizieren
oTextFrame=oTextFrames.getbyName(sFrameName)
'übliche Aufrufe um einen TextCursor zu basteln
oText = oTextFrame.getText()
oCursor = oText.createTextCursor()
oCursor.goToEnd(FALSE)
' Grafik instantiieren
oGraphic = oDoc.createInstance("com.sun.star.text.GraphicObject")
' URL, Verankerung, Höhe und Breite festlegen
With oGraphic
.GraphicURL = ConvertToURL( "C:\test\testbild.jpg" )
.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
.Width = 4546 'Die Breite ist größer als der Rahmen
.Height = 3460
End With
'Bild in Textrahmen einfügen
oTextFrame.insertTextContent( oCursor, oGraphic, False )
End Sub
Das Bild wird nun links on die obere Ecke des Rahmen geheftet und der Rest der nach rechts über den Rahmen hinausragt wird nicht mehr angezeigt.
Ich weiß leider nicht, ob es auch die Möglichkeit gibt das Bild mit der rechten oberen Ecke rechts an den Rahmen zu heften, so dass der linke Rand nicht mehr dargestellt wird, weil er dann links aus dem Rahmen herausragt, vielleicht über Properties die die das Bild rechtsbündig einbinden. Vielleicht weiss jemand anders da mehr.
Ich selbst verwende diese Technik in einem Projekt in der Ausweise gedruckt werden und die Fotos von einer Webcam stammen.
So nun hab ich mir einen Kaffee verdient.
Mit freundlichen Grüßen
Georg