回答編集履歴

7

修正

2017/07/19 07:34

投稿

退会済みユーザー
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
 
75
- foreach (string path in pathes)
75
+ foreach (string path in paths)
76
76
 
77
77
  {
78
78
 
@@ -208,7 +208,7 @@
208
208
 
209
209
 
210
210
 
211
- foreach (string path in pathes)
211
+ foreach (string path in paths)
212
212
 
213
213
  {
214
214
 

6

修正

2017/07/19 07:34

投稿

退会済みユーザー
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- Magick.NET(ImageMagick)を利用した画像判定のイメージ。
53
+ Magick.NET(ImageMagick)を利用したエラーで画像判定するときのイメージ。
54
54
 
55
55
  ```C#
56
56
 

5

修正

2017/07/19 07:32

投稿

退会済みユーザー
test CHANGED
@@ -278,6 +278,8 @@
278
278
 
279
279
  PSDファイルを画像だとは判定できない。
280
280
 
281
+ また、これだけだと恐らくファイルの種類も判別できない。
282
+
281
283
 
282
284
 
283
285
  基本的にファイルを画像として読み込めるかどうかで判定を行っている。

4

修正

2017/07/19 07:31

投稿

退会済みユーザー
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  例1:
116
116
 
117
- 拡張子がJpgに変更されたPngが混ざっていた時の出力結果
117
+ 拡張子がJpgに変更されたPngが混ざっていた時の出力結果
118
118
 
119
119
  ```
120
120
 
@@ -156,7 +156,7 @@
156
156
 
157
157
  例3:
158
158
 
159
- 例1と例2の混合
159
+ 例1と例2の混合
160
160
 
161
161
  ```
162
162
 
@@ -244,7 +244,7 @@
244
244
 
245
245
  ```
246
246
 
247
- 先ほどの例3についての出力
247
+ 先ほどの例3についての出力
248
248
 
249
249
  ```
250
250
 

3

修正

2017/07/19 07:29

投稿

退会済みユーザー
test CHANGED
@@ -50,6 +50,234 @@
50
50
 
51
51
 
52
52
 
53
-
53
+ Magick.NET(ImageMagick)を利用した画像判定のイメージ。
54
+
54
-
55
+ ```C#
56
+
55
-
57
+ using System;
58
+
59
+ using ImageMagick;
60
+
61
+
62
+
63
+ class Program
64
+
65
+ {
66
+
67
+ static void Main(string[] args)
68
+
69
+ {
70
+
71
+ string[] pathes = System.IO.Directory.GetFiles("images/");
72
+
73
+
74
+
75
+ foreach (string path in pathes)
76
+
77
+ {
78
+
79
+ try
80
+
81
+ {
82
+
83
+ using (MagickImage img = new MagickImage(path))
84
+
85
+ {
86
+
87
+ string ext = img.Format.ToString();
88
+
89
+ Console.WriteLine($"*{path}は{ext}です。");
90
+
91
+ }
92
+
93
+ }
94
+
95
+ catch
96
+
97
+ {
98
+
99
+ Console.WriteLine($" {path}は画像ではありません。");
100
+
101
+ }
102
+
103
+ }
104
+
105
+
106
+
107
+ Console.ReadKey();
108
+
109
+ }
110
+
111
+ }
112
+
113
+ ```
114
+
115
+ 例1:
116
+
117
+ 拡張子がJpgに変更されたPngが混ざっていた時の出力結果
118
+
119
+ ```
120
+
121
+ *images/08.jpgはPngです。
122
+
123
+ *images/09.jpgはPngです。
124
+
125
+ *images/10.pngはPngです。
126
+
127
+ *images/11.jpgはPngです。
128
+
129
+ ```
130
+
131
+ 例2:
132
+
133
+ 画像以外のファイルの拡張子が画像ファイルのものに
134
+
135
+ 変更されていた時の出力結果。
136
+
137
+ ```
138
+
139
+ *images/00.jpgはJpegです。
140
+
141
+ images/01.gifは画像ではありません。
142
+
143
+ *images/02.gifはGifです。
144
+
145
+ images/03.pngは画像ではありません。
146
+
147
+ images/04.psdは画像ではありません。
148
+
149
+ *images/05.psdはPsdです。
150
+
151
+ images/06.bmpは画像ではありません。
152
+
153
+ *images/07.bmpはBmpです。
154
+
155
+ ```
156
+
157
+ 例3:
158
+
159
+ 例1と例2の混合
160
+
161
+ ```
162
+
163
+ *images/00.jpgはJpegです。
164
+
165
+ images/01.gifは画像ではありません。
166
+
167
+ *images/02.gifはGifです。
168
+
169
+ images/03.pngは画像ではありません。
170
+
171
+ images/04.psdは画像ではありません。
172
+
173
+ *images/05.psdはPsdです。
174
+
175
+ images/06.bmpは画像ではありません。
176
+
177
+ *images/07.bmpはBmpです。
178
+
179
+ *images/08.jpgはPngです。
180
+
181
+ *images/09.jpgはPngです。
182
+
183
+ *images/10.pngはPngです。
184
+
185
+ *images/11.jpgはPngです。
186
+
187
+ ```
188
+
189
+ Magick.NET(ImageMagick)を使わないでエラーで調べる方法のイメージ。
190
+
191
+ ```C#
192
+
193
+ using System;
194
+
195
+ using System.Drawing;
196
+
197
+
198
+
199
+ class Program
200
+
201
+ {
202
+
203
+ static void Main(string[] args)
204
+
205
+ {
206
+
207
+ string[] pathes = System.IO.Directory.GetFiles("images/");
208
+
209
+
210
+
211
+ foreach (string path in pathes)
212
+
213
+ {
214
+
215
+ try
216
+
217
+ {
218
+
219
+ Bitmap bmp = new Bitmap(path);
220
+
221
+ Console.WriteLine($"*{path}は画像です。");
222
+
223
+ }
224
+
225
+ catch
226
+
227
+ {
228
+
229
+ Console.WriteLine($" {path}は画像ではありません。");
230
+
231
+ }
232
+
233
+ }
234
+
235
+
236
+
237
+ Console.ReadKey();
238
+
239
+ }
240
+
241
+ }
242
+
243
+
244
+
245
+ ```
246
+
247
+ 先ほどの例3についての出力
248
+
249
+ ```
250
+
251
+ *images/00.jpgは画像です。
252
+
253
+ images/01.gifは画像ではありません。
254
+
255
+ *images/02.gifは画像です。
256
+
257
+ images/03.pngは画像ではありません。
258
+
259
+ images/04.psdは画像ではありません。
260
+
261
+ images/05.psdは画像ではありません。
262
+
263
+ images/06.bmpは画像ではありません。
264
+
265
+ *images/07.bmpは画像です。
266
+
267
+ *images/08.jpgは画像です。
268
+
269
+ *images/09.jpgは画像です。
270
+
271
+ *images/10.pngは画像です。
272
+
273
+ *images/11.jpgは画像です。
274
+
275
+ ```
276
+
277
+ こちらの場合だとPSDファイルがサポートされていない?ので
278
+
279
+ PSDファイルを画像だとは判定できない。
280
+
281
+
282
+
283
+ 基本的にファイルを画像として読み込めるかどうかで判定を行っている。

2

修正

2017/07/19 07:28

投稿

退会済みユーザー
test CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
 
13
13
  #追記
14
+
15
+ [ファイルのヘッダについて](http://d.hatena.ne.jp/lira586_ps/20040704/p4)
14
16
 
15
17
  [バイナリデータのヘッダを正規表現でチェック](https://www.gfd-dennou.org/arch/morikawa/memo/binary_regexp_check.htm)
16
18
 

1

修正

2017/07/19 05:53

投稿

退会済みユーザー
test CHANGED
@@ -7,3 +7,47 @@
7
7
  プログラミング初心者の私は処理してみて
8
8
 
9
9
  エラーが出るかどうかで判断しています。
10
+
11
+
12
+
13
+ #追記
14
+
15
+ [バイナリデータのヘッダを正規表現でチェック](https://www.gfd-dennou.org/arch/morikawa/memo/binary_regexp_check.htm)
16
+
17
+ [バイナリーエディタがあればファイルタイプが分かる!たぶん。](https://www.webimpact.co.jp/banchoblog/?p=1055)
18
+
19
+ [画像ファイルのフォーマットをバイナリデータ処理で判別](https://support.asteria.com/hc/ja/articles/229087987-%E7%94%BB%E5%83%8F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%82%92%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%87%E3%83%BC%E3%82%BF%E5%87%A6%E7%90%86%E3%81%A7%E5%88%A4%E5%88%A5)
20
+
21
+ [画像のファイルタイプをバイナリヘッダで判定する](http://qiita.com/tetsuya/items/345116e8c545f4de981b)
22
+
23
+ [バイナリーデータから画像の種類を判別する](http://nodamushi.hatenablog.com/entry/20110121/1295572551)
24
+
25
+
26
+
27
+ ImageMagickでもエラーで判定するのならそれ以外の方法で
28
+
29
+ 簡単なものを、ということでバイナリデータのヘッダで
30
+
31
+ 確認する方法を紹介してみます。
32
+
33
+
34
+
35
+ 私はバイナリファイルに詳しくないのでどの程度正確なのか
36
+
37
+ 画像ファイルによって、正規表現をどうすれば良いのかは
38
+
39
+ 分かりません。
40
+
41
+
42
+
43
+ 私自身がブラウザのキャッシュから画像を判別してファイル名を
44
+
45
+ 拡張子付きのものに変更して見られるようにするということを
46
+
47
+ やったときに利用した方法です。(コードは[こちら](https://teratail.com/questions/60605)の私の回答)
48
+
49
+
50
+
51
+
52
+
53
+