21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShell で画像の回転、リサイズを行う

Last updated at Posted at 2016-08-16

ブログからの転載

経緯

スマホで取った写真の解像度が大きいので、SNS へのアップ前に自力で小さくしようと思ったら GIMP 立ち上げて... 面倒だったので、PowerShell でやってみました

画像の回転

# アセンブリの読み込み
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")

# 画像ファイルの読み込み
$image = New-Object System.Drawing.Bitmap("ファイルパス")

# 回転
$image.RotateFlip("RotateFlipType 列挙体より選択") 

# 保存
$image.Save("ファイルパス", [System.Drawing.Imaging.ImageFormat]::"ImageFormat クラスのプロパティより選択")

# オブジェクトの破棄
$image.Dispose()

RotateFlipType 列挙体と意味

反転 回転(全て時計回り)
Rotate270FlipNone なし 270 度
Rotate180FlipNone なし 180 度
Rotate90FlipNone なし 90 度
RotateNoneFlipNone なし なし
Rotate270FlipX 水平 270 度
Rotate180FlipX 水平 180 度
Rotate90FlipX 水平 90 度
RotateNoneFlipX 水平 なし
Rotate270FlipY 垂直 270 度
Rotate180FlipY 垂直 180 度
Rotate90FlipY 垂直 90 度
RotateNoneFlipY 垂直 なし
Rotate270FlipXY 水平&垂直 270 度
Rotate180FlipXY 水平&垂直 180 度
Rotate90FlipXY 水平&垂直 90 度
RotateNoneFlipXY 水平&垂直 なし

回転の例

デスクトップの hoge.jpg を時計回りに 90 度回転させて hoge_turn90.jpg として保存する例

# アセンブリの読み込み
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")

# 画像ファイルの読み込み
$image = New-Object System.Drawing.Bitmap("C:\Users\miyamiya\Desktop\hoge.jpg")

# 回転
$image.RotateFlip("Rotate90FlipNone") 

# 保存
$image.Save("C:\Users\miyamiya\Desktop\hoge_turn90.jpg", [System.Drawing.Imaging.ImageFormat]::Jpeg)

# オブジェクトの破棄
$image.Dispose()

画像のリサイズ

# アセンブリの読み込み
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")

# 画像ファイルの読み込み
$image = New-Object System.Drawing.Bitmap("ファイルパス")

# 縮小先のオブジェクトを生成
$canvas = New-Object System.Drawing.Bitmap("リサイズ後の幅", "リサイズ後の高さ")

# 縮小先へ描画
$graphics = [System.Drawing.Graphics]::FromImage($canvas)
$graphics.DrawImage($image, (New-Object System.Drawing.Rectangle(0, 0, $canvas.Width, $canvas.Height)))

# 保存
$canvas.Save("ファイルパス", [System.Drawing.Imaging.ImageFormat]::"ImageFormat クラスのプロパティより選択")

# オブジェクトの破棄
$graphics.Dispose()
$canvas.Dispose()
$image.Dispose()

画像のリサイズの例

デスクトップの hoge.jpg を 幅と高さを 50% にして hoge_resize.jpg として保存する例

# アセンブリの読み込み
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")

# 画像ファイルの読み込み
$image = New-Object System.Drawing.Bitmap("C:\Users\miyamiya\Desktop\hoge.jpg")

# 縮小先のオブジェクトを生成
$canvas = New-Object System.Drawing.Bitmap([int]($image.Width / 2), [int]($image.Height / 2))

# 縮小先へ描画
$graphics = [System.Drawing.Graphics]::FromImage($canvas)
$graphics.DrawImage($image, (New-Object System.Drawing.Rectangle(0, 0, $canvas.Width, $canvas.Height)))

# 保存
$canvas.Save("C:\Users\miyamiya\Desktop\hoge_resize.jpg", [System.Drawing.Imaging.ImageFormat]::Jpeg)

# オブジェクトの破棄
$graphics.Dispose()
$canvas.Dispose()
$image.Dispose()

参考

21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?