Ritagliare immagini in maniera personalizzata

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


    Other languages:

    Descrizione

    Questa macro permette di automatizzare il ritaglio delle immagini in modo personalizzabile. A tal fine, tra le altre cose fa uso di com.sun.star.text.GraphicCrop.[1] Fate attenzione che semplicemente modificando il .GraphicCrop di un'immagine l'esecuzione non avviene in modo fluido, perciò la macro qui sotto regola la posizione e le dimensioni dell'immagine in modo che questa, al termine dell'esecuzione della macro, risulti statica e non compressa o allungata. La macro è anche progettata per tener conto dei valori di ritaglio precedentemente applicati all'immagine, in modo da poterla eseguire più volte sulla stessa immagine.

    Prestate attenzione al fatto che la principale caratteristica che manca a questa macro è che l'immagine deve avere le sue dimensioni originarie per evitare che l'esecuzione della macro comporti la sua compressione/allungamento. (Se trovate una soluzione che permetta di modificare le sue dimensioni, sentitevi liberi di modificare questa pagina del wiki.) Diffidate anche quando incollate delle immagini le cui dimensioni in pixel sono più grandi di quelle della diapositiva stessa, questa verrà automaticamente compressa, il che comporterà un allungamento dell'immagine quando eseguite la macro.

    Codice

    LibreOffice Basic

    'Option Explicit
    
    Sub custom_crop()
        '''Applica un ritaglio personalizzato all'immagine selezionata.'''
    
        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
    
        ' Specifica i parametri per il ritaglio.
        leftCrop = 3000
        rightCrop = 0
        topCrop = 0
        bottomCrop = 0
    
        ' Applica il ritaglio all'immagine in modo da tener conto dei valori del precedente ritaglio.
        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
    
        ' Regola la posizione e le dimensioni dell'immagine in modo che questa non si sposti o che non venga allungata/compressa dal procedimento di ritaglio.
        ' (Fate attenzione che, affinché questo funzioni, l'immagine deve avere le sue dimensioni originarie.)
        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

    da completare

    Download ODP file

    Note