Đó là thực sự khá dễ dàng để làm và ruột của bạn cảm giác về System.Drawing là trên thực tế chính xác:
Add-Type -Assembly System.Drawing
$input | ForEach-Object { [Drawing.Image]::FromFile($_) }
Save rằng như Get-Image.ps1
đâu đó trong đường dẫn của bạn và sau đó bạn có thể sử dụng nó.
Một lựa chọn khác sẽ được thêm dòng sau vào $profile
của bạn:
Add-Type -Assembly System.Drawing
function Get-Image {
$input | ForEach-Object { [Drawing.Image]::FromFile($_) }
}
mà làm việc khá nhiều như nhau. Tất nhiên, thêm những thứ ưa thích như tài liệu hoặc để bạn thấy phù hợp.
Bạn có thể sau đó sử dụng nó như vậy:
gci -inc *.jpg -rec | Get-Image | ? { $_.Width -eq 1024 -and $_.Height -eq 768 }
Lưu ý rằng bạn nên xử lý các đối tượng được tạo ra theo cách này sau khi sử dụng chúng.
Tất nhiên, bạn có thể thêm một tùy chỉnh Dimension
thuộc tính để bạn có thể lọc cho rằng:
function Get-Image {
$input |
ForEach-Object { [Drawing.Image]::FromFile($_) } |
ForEach-Object {
$_ | Add-Member -PassThru NoteProperty Dimension ('{0}x{1}' -f $_.Width,$_.Height)
}
}
Bạn sẽ lưu ý trong câu trả lời, hình ảnh sẽ được xử lý sau khi tác vụ kết thúc? Chỉ để giáo dục những người viết kịch bản khác. Phương pháp vứt bỏ thường bị bỏ qua ... – stej
@stej: Eep, ok. Bất kỳ cách nào làm như vậy một cách chính xác hoặc tự động ngoại trừ việc gắn '% {$ _. Dispose()}' vào cuối đường dẫn? – Joey
Tôi không nghĩ có cách nào tốt hơn là làm theo cách thủ công như bạn đề xuất. Hoặc đợi cho đến khi kết thúc phiên Posh. Tuy nhiên, tôi thường mở giao diện điều khiển Posh sau khi đăng nhập và đóng nó trước khi đăng xuất, do đó, đó không phải là lý tưởng. Hãy thử/Cuối cùng cũng có thể giúp ích, nhưng đó là chi phí cao. Tôi nghĩ rằng một lưu ý là đủ và để phần còn lại trên các độc giả;) – stej