iPhone で撮影した写真は縦横が逆になってしまうことがあるらしく、検索すれば情報はいっぱい出てくるのですが、要するに Exif 情報を認識して回転してくれないことが原因のようです。煩わしいので Exif に従って画像ごと回転してしまいたいと思います。C# では情報が見つかったものの、C# で書くほどでもないので、PowerShell で書いてみました。これを .ps1 ファイルにして実行すれば解決!楽ちん!
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void][System.Reflection.Assembly]::LoadWithPartialName("System.IO") $sourceDir = "{{sourcefolder}}" $destDir = "{{destfolder}}" foreach ($sourceFile in [System.IO.Directory]::GetFiles($sourceDir, "*")) { $destFile = [System.IO.Path]::Combine($destDir, [System.IO.Path]::GetFileName($sourceFile)) $origin = New-Object System.Drawing.Bitmap($sourceFile) $rotation = [System.Drawing.RotateFlipType]::RotateNoneFlipNone foreach ($item in $origin.PropertyItems) { if ($item.Id -eq 274) { if ($item.Value[0] -eq 3) { $rotation = [System.Drawing.RotateFlipType]::Rotate180FlipNone } if ($item.Value[0] -eq 6) { $rotation = [System.Drawing.RotateFlipType]::Rotate90FlipNone } if ($item.Value[0] -eq 8) { $rotation = [System.Drawing.RotateFlipType]::Rotate270FlipNone } } } $rotated = [System.Drawing.Bitmap]$origin.Clone() $rotated.RotateFlip($rotation) foreach ($item in $origin.PropertyItems) { if ($item.Id -eq 274) { $item.Value[0] = 0 $rotated.SetPropertyItem($item) } } $rotated.Save($destFile, [System.Drawing.Imaging.ImageFormat]::Jpeg) $origin.Dispose() $rotated.Dispose() }