回答編集履歴

2

元の画像のメタデータもコピーするように修正

2018/04/06 09:17

投稿

imihito
imihito

スコア2166

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  [string]$画像の保存されているフォルダ = 'C:\Users\TestUser\Pictures'
24
24
 
25
- [string]$縮した画像の保存先 = '{0}\圧縮画像' -f $画像の保存されているフォルダ
25
+ [string]$縮した画像の保存先 = '{0}\圧縮画像' -f $画像の保存されているフォルダ
26
26
 
27
27
  [int]$画像の横幅 = 800 #px
28
28
 
@@ -38,13 +38,13 @@
38
38
 
39
39
  Add-Type -AssemblyName System.Drawing
40
40
 
41
- [Drawing.Imaging.ImageFormat]$縮後画像の形式 = [Drawing.Imaging.ImageFormat]::Jpeg
41
+ [Drawing.Imaging.ImageFormat]$縮後画像の形式 = [Drawing.Imaging.ImageFormat]::Jpeg
42
42
 
43
43
 
44
44
 
45
45
  # 出力先のフォルダを作成(すでにある場合は何もしない)
46
46
 
47
- [IO.Directory]::CreateDirectory( $縮した画像の保存先 ) > $null
47
+ [IO.Directory]::CreateDirectory( $縮した画像の保存先 ) > $null
48
48
 
49
49
 
50
50
 
@@ -54,39 +54,49 @@
54
54
 
55
55
  %{
56
56
 
57
- # 見つかったものそれぞれに対して処理
57
+ # 見つかったものそれぞれに対して処理 ( $_ -is [IO.FileInfo] )
58
58
 
59
-
59
+
60
60
 
61
61
  # 元となる画像読み込み
62
62
 
63
63
  [Drawing.Bitmap]$srcBmp = [Drawing.Bitmap]::FromFile($_.FullName)
64
64
 
65
+ # 画像のメタデータ(撮影日時など)取得
66
+
67
+ [Drawing.Imaging.PropertyItem[]]$props = $srcBmp.PropertyItems
68
+
65
69
 
70
+
71
+
66
72
 
67
73
  # 新しい画像の大きさを計算
68
74
 
69
75
  [int]$newWidth = $画像の横幅
70
76
 
71
- [int]$newHeight = ($srcBmp.Height / $srcBmp.Width) * $newWidth
77
+ [int]$newHeight = [int]( ($srcBmp.Height / $srcBmp.Width) * $newWidth )
72
78
 
73
79
 
74
80
 
75
- # 縮した画像を作成(メモリ内)
81
+ # 縮した画像を作成(メモリ内)
76
82
 
77
83
  [Drawing.Bitmap]$destBmp =
78
84
 
79
85
  New-Object -TypeName Drawing.Bitmap -ArgumentList $srcBmp, $newWidth, $newHeight
80
86
 
81
-
87
+ # 画像のメタデータ(撮影日時など)設定
82
88
 
89
+ $props | %{ $destBmp.SetPropertyItem( $_ ) <# $_ -is [Drawing.Imaging.PropertyItem] #> }
90
+
91
+
92
+
83
- # 縮した画像の保存先
93
+ # 縮した画像の保存先
84
94
 
85
95
  [string]$destPath = [IO.Path]::Combine(
86
96
 
87
- $縮した画像の保存先,
97
+ $縮した画像の保存先,
88
98
 
89
- [IO.Path]::ChangeExtension($_.Name, $縮後画像の形式.ToString()))
99
+ [IO.Path]::ChangeExtension($_.Name, $縮後画像の形式.ToString()))
90
100
 
91
101
 
92
102
 
@@ -98,9 +108,9 @@
98
108
 
99
109
  } else {
100
110
 
101
- # $縮後画像の形式 で保存
111
+ # $縮後画像の形式 で保存
102
112
 
103
- $destBmp.Save($destPath, $縮後画像の形式)
113
+ $destBmp.Save($destPath, $縮後画像の形式)
104
114
 
105
115
  Write-Host ('「{0}」を「{1}」として保存しました。' -f $_.Name, [IO.Path]::GetFileName($destPath))
106
116
 
@@ -120,7 +130,7 @@
120
130
 
121
131
  # 保存したフォルダを開く
122
132
 
123
- explorer.exe $縮した画像の保存先
133
+ explorer.exe $縮した画像の保存先
124
134
 
125
135
  ```
126
136
 

1

しっくりこなかったため、処理内の「圧縮」を「縮小

2018/04/06 09:17

投稿

imihito
imihito

スコア2166

test CHANGED
@@ -123,3 +123,25 @@
123
123
  explorer.exe $圧縮した画像の保存先
124
124
 
125
125
  ```
126
+
127
+
128
+
129
+ ---
130
+
131
+
132
+
133
+ 実行ポリシーによる制限を解除するコード
134
+
135
+
136
+
137
+ ```posh
138
+
139
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
140
+
141
+
142
+
143
+ # 省略形
144
+
145
+ Set-ExecutionPolicy RemoteSigned CurrentUser
146
+
147
+ ```