Solução do PowerShell
O script deve funcionar com a maioria dos scanners, seja Canon, Epson ou qualquer outro, desde que sejam compatíveis com o WIA e suportem o comando transfer()
. O script começará a digitalizar imediatamente. Todas as opções, como nome do arquivo, caminho ou formato de imagem, já estão definidas via script. Você só precisa iniciar o processo de digitalização com um atalho
- Salve como, por exemplo,
D:\StartScan.ps1
-
Crie um novo atalho e aponte para
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File "D:\StartScan.ps1"
StartScan.ps1
# Create object to access the scanner
$deviceManager = new-object -ComObject WIA.DeviceManager
$device = $deviceManager.DeviceInfos.Item(1).Connect()
# Create object to access the scanned image later
$imageProcess = new-object -ComObject WIA.ImageProcess
# Store file format GUID strings
$wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"
# Scan the image from scanner as BMP
foreach ($item in $device.Items) {
$image = $item.Transfer()
}
# set type to JPEG and quality/compression level
$imageProcess.Filters.Add($imageProcess.FilterInfos.Item("Convert").FilterID)
$imageProcess.Filters.Item(1).Properties.Item("FormatID").Value = $wiaFormatJPEG
$imageProcess.Filters.Item(1).Properties.Item("Quality").Value = 5
$image = $imageProcess.Apply($image)
# Build filepath from desktop path and filename 'Scan 0'
$filename = "$([Environment]::GetFolderPath("Desktop"))\Scan {0}.jpg"
# If a file named 'Scan 0' already exists, increment the index as long as needed
$index = 0
while (test-path ($filename -f $index)) {[void](++$index)}
$filename = $filename -f $index
# Save image to 'C:\Users\<username>\Desktop\Scan {x}'
$image.SaveFile($filename)
# Show image
& $filename
Personalizações
- Altere
Item("FormatID").Value = $wiaFormatJPEG
para$wiaFormatPNG
(ou TIFF, BMP, GIF) se você precisar de outro formato de imagem - Altere
$([Environment]::GetFolderPath("Desktop"))\Scan {0}.jpg"
se você precisar de outro caminho de saída. Altere a extensão.jpg
se você alterou anteriormente o formato da imagem