Jump to content

マクロ/Impress/003

From The Document Foundation Wiki
This page is a translated version of the page Macros/Impress/003 and the translation is 100% complete.


説明

このマクロを使用すると、カスタマイズ可能な方法で画像のトリミングを自動化できます。そのために、特に 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

未定

ODP ファイルのダウンロード

Notes