Search

2017/10/21

Powershellでフォルダ内の画像ファイル全部をたてよこサイズを半分に加工:1行でむりやり書く

パイプライン処理とかForeachを使えば何とか1行なる。
でも可読性が悪いのでやめた方がいいと思うけど、
パッと片付けたいときにはこんなのがいいかも。
報告書ように簡単に並べたいときとか。

名前を変えたくないときは、
$name="c:\tmp\small"+$i.tostring("000")+".jpg" のとこを
$name="c:\tmp\small"+$_.basename+".jpg" に変更で。

ls -File を ls -File -recurse にすればサブフォルファの画像ファイルも
全部変換してくれる。
こういう柔軟な変更がかんたんなのでPowershellのいいところ。
高機能なコマンドレッドが対応してくれる。





#無理やり1行で画像をjpgでたてよこ半分サイズでほかのフォルダに出力
# The software is public domain license
#Set-ExecutionPolicy RemoteSigned -Scope Process #必要なときに

ls -File | ? extension -match "jpg|jpeg|png|gif" |%{Add-Type -AssemblyName System.Drawing;$i=1}{$name="c:\tmp\small"+$i.tostring("000")+".jpg"; $src = New-Object System.Drawing.Bitmap($_.fullname); $out = New-Object System.Drawing.Bitmap($src, ($src.Width/2), ($src.Height/2) ); $out.Save($name, [System.Drawing.Imaging.ImageFormat]::Jpeg); $i++}


もっと高速にやるには他の方法があるんじゃないかとと思います。

.NETによる画像処理の高速化Tips:非unsafe編
https://qiita.com/Nuits/items/4a2fbc0f4e8583bd5531


C#を使って画像を高速でリサイズする方法
http://note-sharp.blogspot.jp/2014/09/var-dir-cimages-parallel.html

より高速にサムネイル画像(縮小画像)を作成するには?[2.0のみ、C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/606fastthumbnail/fastthumbnail.html

0 件のコメント:

コメントを投稿