Smart image search via Powershell

前端 未结 2 897
挽巷
挽巷 2021-02-06 04:30

I am interested in file searching by custom properties. For example, I want to find all JPEG-images with certain dimensions. Something looks like

Get-ChildItem -         


        
2条回答
  •  温柔的废话
    2021-02-06 05:03

    That's actually pretty easy to do and your gut feeling about System.Drawing was in fact correct:

    Add-Type -Assembly System.Drawing
    
    $input | ForEach-Object { [Drawing.Image]::FromFile($_) }
    

    Save that as Get-Image.ps1 somewhere in your path and then you can use it.

    Another option would be to add the following to your $profile:

    Add-Type -Assembly System.Drawing
    
    function Get-Image {
        $input | ForEach-Object { [Drawing.Image]::FromFile($_) }
    }
    

    which works pretty much the same. Of course, add fancy things like documentation or so as you see fit.

    You can then use it like so:

    gci -inc *.jpg -rec | Get-Image | ? { $_.Width -eq 1024 -and $_.Height -eq 768 }
    

    Note that you should dispose the objects created this way after using them.

    Of course, you can add a custom Dimension property so you could filter for that:

    function Get-Image {
        $input |
            ForEach-Object { [Drawing.Image]::FromFile($_) } |
            ForEach-Object {
                $_ | Add-Member -PassThru NoteProperty Dimension ('{0}x{1}' -f $_.Width,$_.Height)
            }
    }
    

提交回复
热议问题