Bilder verzerren beim Komprimieren

Hi,
wenn ich Bilder in Impress zurechtschneide, plaziere und anschließend komprimiere, kommt es manchmal vor, dass die Bilder verzerrt dargestellt werden. Vermutlich werden die zugenschnittenen Bereiche wieder eingeblendet, sodass das Bild entsprechend der Geometrie des Zuschnitts verzerrt wird.

gibt es ein workaround oder so?

Workaround

Nachdem Du das Bild zugeschnitten hast, rechts-klicke darauf und wähle im Kontextmenü “Speichern”.
Gib einen neuen Namen ein zum Speichern und wähle nicht “Originalbild”.

82468 HB Bilder verzerren beim Komprimieren

Entferne dann das Originalbild aus dem Dokument und lade das zugeschnittene und gespeicherte Bild zur Weiterbearbeitung.

1 Like

ah ok, ziemlich kompliziert. Wäre es möglich, das zu automatisieren, z.B. mit einem Makro?

@JCR Du kannst das Bild zuschneiden, ausschneiden (Zwischenablage) und wieder als Bitmap einfügen (STRG+UMSCHALT+V oder Menü Bearbeiten | Inhalte einfügen…). Die aus dem Bild geschnittenen Teile sind dann definitiv weg.
Dann das Bild komprimieren.

Die Methode @Hrbrgr 's ist dann von Vorteil, wenn du das (zugeschnittene) Bild noch einmal verwenden möchtest, aber in der Kompression eine andere Stufe wählst…

1 Like

Ja das geht. gibt es Einstellungen bei “Präsentation komprimieren …” mit welchem das so ähnlich gehandhabt wird?

Siehe z.B. Bilder komprimieren in Impress-Präsentation | heise online

Danke, aber dann habe ich wieder die verzerrten Bider. Muss man dort spezielle Optionen setzen oder nicht setzen?

Hat jemand Tipps, welche Optionen beim “Präsentationen komprimieren …” bei zugeschnittenen Bildern nicht zum verzerren führen?

Menü Extras>Präsentation komprimieren…:
Einfach mal mit den besten Werten beginnen (höchste Auflösung), und wenn das schon Probleme macht, kannst Du dieses vorgehen eh vergessen.
Ansonsten Stufenweise nach den vorgegebenen Möglichkeiten die Auflösung verringern.

habe das mal als Makro gebastelt, um es sinnvoll amwenden zu können:

sub cutnpaste
rem ----------------------------------------------------------------------
rem-- Ausschneiden eines Bilds und als Grapikelement einfügen-----------------
rem-- Copieren eines Bilds und als Grapikelement einfügen-----------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SelectedFormat"
args2(0).Value = 3

dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args2())


end sub

mit dem weiteren Skript kann es auf alle Bilder angewendet werden. Zusätzlich wird der Minimizer aufgerufen:

sub callminimizer
rem ----------------------------------------------------------------------
rem-- Copieren eines Bilds und als Grapikelement einfügen
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:PresentationMinimizer", "", 0, Array())
end sub

Sub GetImages2()
Dim oDoc, oPage, oShape
	'Dim sListe as string listeImg.addItem (sListe, i)
Dim nNumOfShapes As Integer
Dim nNumOfImage As Integer
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
nNumOfImage = 0
'Anzahl der in der Folie enthaltenen Formen
Dim i As Integer
oDoc = ThisComponent
document   = ThisComponent.CurrentController.Frame
AnzPages = oDoc.getDrawPages.getCount()
For j = 0 To AnzPages -1
oPage = oDoc.DrawPages(j)
nNumOfShapes = oPage.getCount()
For i = 0 To nNumOfShapes -1
' Zeichnungs- und Präsentationsdokumente
'das Shape aus dem Container durch den Index festlegen
oShape = oPage.getByIndex(i)
      If oShape.supportsService("com.sun.star.drawing.GraphicObjectShape") then
    ThisComponent.CurrentController.select(oShape)
    cutnpaste
'    nNumOfImage=nNumOfImage+1
end if
Next
Next
'MsgBox nNumOfImage
callminimizer

End Sub

Habe noch einmal das Konvertieren zu Bitmap hnzugefügt, nun scheint es immer zu klappen.

sub cutnpaste
rem ----------------------------------------------------------------------
rem-- Ausschneiden eines Bilds und als Grapikelement einfügen-----------------
rem-- Copieren eines Bilds und als Grapikelement einfügen-----------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------

dispatcher.executeDispatch(document, ".uno:ConvertIntoBitmap", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SelectedFormat"
args2(0).Value = 3
dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:SendToBack", "", 0, Array())

end sub

sub cutnpaste
rem ----------------------------------------------------------------------
rem-- Ausschneiden eines Bilds und als Grapikelement (metafile) einfügen-----------------
rem-- Copieren eines Bilds und als Grapikelement einfügen-----------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”)

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, “.uno:ConvertIntoMetaFile”, “”, 0, Array())
dispatcher.executeDispatch(document, “.uno:Cut”, “”, 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = “SelectedFormat”
args2(0).Value = 3

dispatcher.executeDispatch(document, “.uno:ClipboardFormatItems”, “”, 0, args2())
dispatcher.executeDispatch(document, “.uno:SendToBack”, “”, 0, Array())

end sub