マクロ/Impress/003
Appearance
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
説明
このマクロを使用すると、カスタマイズ可能な方法で画像のトリミングを自動化できます。そのために、特に com.sun.star.text.GraphicCrop を利用しています。[1]画像の .GraphicCrop
を単に変更するだけでは、スムーズに実行されないことに注意してください。そのため、以下のマクロは、画像の位置とサイズを調整して、マクロの実行後に圧縮または伸長されないようにします。また、マクロは、画像に以前に適用されたトリミング値を考慮するように設計されているため、同じ画像に対してマクロを複数回実行できます。
このマクロに欠けている主な機能の1つは、マクロの実行時に画像が圧縮/伸長されないように、画像が元のサイズである必要があることです。(サイズを変更できる解決策が見つかった場合は、この Wikiページを自由に編集してください。)また、スライド自体よりもピクセル寸法が大きい画像を貼り付けると、自動的に圧縮され、マクロの実行時に画像が伸長されることに注意してください。
Code
LibreOffice Basic
'Option Explicit
Sub custom_crop()
'''現在選択されているイメージのカスタム・トリミングを適用します。'''
Dim oGC As New com.sun.star.text.GraphicCrop
Dim oPos As New com.sun.star.awt.Point
Dim oSize As New com.sun.star.awt.Size
oImage = ThisComponent.CurrentSelection(0)
x = oImage.getPosition().X
y = oImage.getPosition().Y
w = oImage.getSize().Width
h = oImage.getSize().Height
' トリミング・パラメータを指定します。
leftCrop = 3000
rightCrop = 0
topCrop = 0
bottomCrop = 0
' 以前のトリミング値が考慮されるように、グラフィック・トリミングを適用します。
oGC.Left = leftCrop + oImage.GraphicCrop.Left
oGC.Right = rightCrop + oImage.GraphicCrop.Right
oGC.Top = topCrop + oImage.GraphicCrop.Top
oGC.Bottom = bottomCrop + oImage.GraphicCrop.Bottom
oImage.GraphicCrop = oGC
' トリミングプロセスで移動したり、伸縮したりしないように、イメージの位置とサイズを調整します。
' (これを機能させるには、画像が元のサイズである必要があることに注意してください。)
oPos.X = x + leftCrop
oPos.Y = y + topCrop
oSize.Width = w - leftCrop - rightCrop
oSize.Height = h - topCrop - bottomCrop
oImage.setPosition(oPos)
oImage.setSize(oSize)
End Sub ' custom_crop()
Python
未定