Thursday, September 19, 2013

Image Information For Filtered Files in Directory

Just a quick script that lists information about the PNG and JPG images in a directory. I wrapped the important parts in a Start/Stop Transcript so that all output is logged to a file. I needed to get a feel for the image sizes and resolutions uploaded by users in our production environment in order to make recommendations for updates to the system.

add-type -AssemblyName System.Drawing;
try { Start-Transcript ".\Get-ImageInformation-log.txt" -ErrorAction SilentlyContinue; } catch {}
gci "C:\Demo\Images\*" -Include @("*.png","*.jpg") | % {
    $img = New-Object System.Drawing.Bitmap $_.FullName;
    $obj = New-Object PSObject;
        Add-Member -InputObject $obj -MemberType NoteProperty -Name Name -Value $_.Name;
        Add-Member -InputObject $obj -MemberType NoteProperty -Name Length -Value $_.Length;
        Add-Member -InputObject $obj -MemberType NoteProperty -Name Height -Value $img.Height;
        Add-Member -InputObject $obj -MemberType NoteProperty -Name Width -Value $img.Width;
        Add-Member -InputObject $obj -MemberType NoteProperty -Name HRes -Value $img.HorizontalResolution;
        Add-Member -InputObject $obj -MemberType NoteProperty -Name VRes -Value $img.VerticalResolution;
    [Void]$img.Dispose();
    $obj;
} | ft -AutoSize Name, @{n='Length';e={"{0:N2} KB" -f ($_.Length / 1Kb)};align='right'}, Height, Width, HRes, VRes;
try { Stop-Transcript -ErrorAction SilentlyContinue; } catch {}

No comments: