Outils pour utilisateurs

Outils du site


windows:script_captures_ecran_vers_jpeg

Revenir au sommaire

Script pour automatiser des captures d'écran et les enregistrer en JPEG

Ce script PowerShell permet d'automatiser des captures d'écran à partir d'un fichier PDF affiché dans Firefox (format portrait basculé vers la gauche au format paysage), d'enregistrer la capture vers un fichier au format JPEG puis de passer à la page suivante.

[CmdletBinding()] Param(
    [Parameter(Mandatory=$True)]
    [Int32] $NumberOfPages
)
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms 

[String] $repertoire = (Get-Item -Path ".\").FullName
[Int32] $origineX = 210
[Int32] $origineY = 128
[Int32] $largeurCapture = 1245
[Int32] $hauteurCapture = 880
[Boolean] $premierePage = $True

Clear-Host

$wShell = New-Object -ComObject wscript.shell
$wShell.AppActivate("Firefox") | Out-Null
$dateDebut = (Get-Date)

for ($i=1; $i -le $NumberOfPages; $i++) {
    [String] $nomFichier = "Capture_"
    $nomFichier += Get-Date -Format "yyyy-MM-dd_HH-mm-ss-fff"
    $nomFichier += ".jpg"
    [String] $cheminComplet = (Join-Path $repertoire $nomFichier)

    $dimensionsImage = New-Object System.Drawing.Size($largeurCapture, $hauteurCapture)
    $pointDepart = New-Object System.Drawing.Point($origineX, $origineY)
    $captureEcran = New-Object System.Drawing.Bitmap($largeurCapture, $hauteurCapture)
    $objetGraphique = [System.Drawing.Graphics]::FromImage($captureEcran)
    $objetGraphique.PageUnit = [System.Drawing.GraphicsUnit]::Pixel
    $objetGraphique.CopyFromScreen($pointDepart, [System.Drawing.Point]::Empty, $dimensionsImage)
    
    $rectanglePremierePage = New-Object System.Drawing.Rectangle 830, 50, 110, 470
    $rectangleToutesPages = New-Object System.Drawing.Rectangle 0, 530, 40, 350
    $pinceauRectangle = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::FromArgb(255, 255, 255, 255))
    if ($premierePage -eq $True) {
        $objetGraphique.FillRectangle($pinceauRectangle, $rectanglePremierePage)
        $premierePage = $False
    }
    $objetGraphique.FillRectangle($pinceauRectangle, $rectangleToutesPages)
    $objetGraphique.Dispose()
    $captureEcran.RotateFlip("Rotate90FlipNone")
    $captureEcran.Save($cheminComplet, [System.Drawing.Imaging.ImageFormat]::Jpeg)
    $captureEcran.Dispose()
    Write-Host ("Capture " + $i + " sur " + $NumberOfPages + " effectuée")
    $wShell.AppActivate("Firefox") | Out-Null
    Start-Sleep -Milliseconds 100
    $wShell.SendKeys("{RIGHT}")
    Start-Sleep -Milliseconds 300
}

Les fichiers JPEG sont enregistrés dans le répertoire du script.

[String] $repertoire = (Get-Item -Path ".\").FullName

Les lignes suivantes permettent de définir l'origine et les dimensions de la capture d'écran. La coordonnée (0,0) est en haut à gauche. L'axe X est horizontal et orienté vers la droite et l'axe Y est vertical et orienté vers le bas.

[Int32] $origineX = 210
[Int32] $origineY = 128
[Int32] $largeurCapture = 1245
[Int32] $hauteurCapture = 880

windows/script_captures_ecran_vers_jpeg.txt · Dernière modification: 2018/05/23 15:59 de luc