回答編集履歴

7

修正

2017/07/19 07:34

投稿

退会済みユーザー
answer CHANGED
@@ -35,7 +35,7 @@
35
35
  {
36
36
  string[] pathes = System.IO.Directory.GetFiles("images/");
37
37
 
38
- foreach (string path in pathes)
38
+ foreach (string path in paths)
39
39
  {
40
40
  try
41
41
  {
@@ -103,7 +103,7 @@
103
103
  {
104
104
  string[] pathes = System.IO.Directory.GetFiles("images/");
105
105
 
106
- foreach (string path in pathes)
106
+ foreach (string path in paths)
107
107
  {
108
108
  try
109
109
  {

6

修正

2017/07/19 07:34

投稿

退会済みユーザー
answer CHANGED
@@ -24,7 +24,7 @@
24
24
  拡張子付きのものに変更して見られるようにするということを
25
25
  やったときに利用した方法です。(コードは[こちら](https://teratail.com/questions/60605)の私の回答)
26
26
 
27
- Magick.NET(ImageMagick)を利用した画像判定のイメージ。
27
+ Magick.NET(ImageMagick)を利用したエラーで画像判定するときのイメージ。
28
28
  ```C#
29
29
  using System;
30
30
  using ImageMagick;

5

修正

2017/07/19 07:32

投稿

退会済みユーザー
answer CHANGED
@@ -138,5 +138,6 @@
138
138
  ```
139
139
  こちらの場合だとPSDファイルがサポートされていない?ので
140
140
  PSDファイルを画像だとは判定できない。
141
+ また、これだけだと恐らくファイルの種類も判別できない。
141
142
 
142
143
  基本的にファイルを画像として読み込めるかどうかで判定を行っている。

4

修正

2017/07/19 07:31

投稿

退会済みユーザー
answer CHANGED
@@ -56,7 +56,7 @@
56
56
  }
57
57
  ```
58
58
  例1:
59
- 拡張子がJpgに変更されたPngが混ざっていた時の出力結果
59
+ 拡張子がJpgに変更されたPngが混ざっていた時の出力結果
60
60
  ```
61
61
  *images/08.jpgはPngです。
62
62
  *images/09.jpgはPngです。
@@ -77,7 +77,7 @@
77
77
  *images/07.bmpはBmpです。
78
78
  ```
79
79
  例3:
80
- 例1と例2の混合
80
+ 例1と例2の混合
81
81
  ```
82
82
  *images/00.jpgはJpegです。
83
83
  images/01.gifは画像ではありません。
@@ -121,7 +121,7 @@
121
121
  }
122
122
 
123
123
  ```
124
- 先ほどの例3についての出力
124
+ 先ほどの例3についての出力
125
125
  ```
126
126
  *images/00.jpgは画像です。
127
127
  images/01.gifは画像ではありません。

3

修正

2017/07/19 07:29

投稿

退会済みユーザー
answer CHANGED
@@ -24,4 +24,119 @@
24
24
  拡張子付きのものに変更して見られるようにするということを
25
25
  やったときに利用した方法です。(コードは[こちら](https://teratail.com/questions/60605)の私の回答)
26
26
 
27
+ Magick.NET(ImageMagick)を利用した画像判定のイメージ。
28
+ ```C#
29
+ using System;
30
+ using ImageMagick;
27
31
 
32
+ class Program
33
+ {
34
+ static void Main(string[] args)
35
+ {
36
+ string[] pathes = System.IO.Directory.GetFiles("images/");
37
+
38
+ foreach (string path in pathes)
39
+ {
40
+ try
41
+ {
42
+ using (MagickImage img = new MagickImage(path))
43
+ {
44
+ string ext = img.Format.ToString();
45
+ Console.WriteLine($"*{path}は{ext}です。");
46
+ }
47
+ }
48
+ catch
49
+ {
50
+ Console.WriteLine($" {path}は画像ではありません。");
51
+ }
52
+ }
53
+
54
+ Console.ReadKey();
55
+ }
56
+ }
57
+ ```
58
+ 例1:
59
+ 拡張子がJpgに変更されたPngが混ざっていた時の出力結果
60
+ ```
61
+ *images/08.jpgはPngです。
62
+ *images/09.jpgはPngです。
63
+ *images/10.pngはPngです。
64
+ *images/11.jpgはPngです。
65
+ ```
66
+ 例2:
67
+ 画像以外のファイルの拡張子が画像ファイルのものに
68
+ 変更されていた時の出力結果。
69
+ ```
70
+ *images/00.jpgはJpegです。
71
+ images/01.gifは画像ではありません。
72
+ *images/02.gifはGifです。
73
+ images/03.pngは画像ではありません。
74
+ images/04.psdは画像ではありません。
75
+ *images/05.psdはPsdです。
76
+ images/06.bmpは画像ではありません。
77
+ *images/07.bmpはBmpです。
78
+ ```
79
+ 例3:
80
+ 例1と例2の混合
81
+ ```
82
+ *images/00.jpgはJpegです。
83
+ images/01.gifは画像ではありません。
84
+ *images/02.gifはGifです。
85
+ images/03.pngは画像ではありません。
86
+ images/04.psdは画像ではありません。
87
+ *images/05.psdはPsdです。
88
+ images/06.bmpは画像ではありません。
89
+ *images/07.bmpはBmpです。
90
+ *images/08.jpgはPngです。
91
+ *images/09.jpgはPngです。
92
+ *images/10.pngはPngです。
93
+ *images/11.jpgはPngです。
94
+ ```
95
+ Magick.NET(ImageMagick)を使わないでエラーで調べる方法のイメージ。
96
+ ```C#
97
+ using System;
98
+ using System.Drawing;
99
+
100
+ class Program
101
+ {
102
+ static void Main(string[] args)
103
+ {
104
+ string[] pathes = System.IO.Directory.GetFiles("images/");
105
+
106
+ foreach (string path in pathes)
107
+ {
108
+ try
109
+ {
110
+ Bitmap bmp = new Bitmap(path);
111
+ Console.WriteLine($"*{path}は画像です。");
112
+ }
113
+ catch
114
+ {
115
+ Console.WriteLine($" {path}は画像ではありません。");
116
+ }
117
+ }
118
+
119
+ Console.ReadKey();
120
+ }
121
+ }
122
+
123
+ ```
124
+ 先ほどの例3についての出力
125
+ ```
126
+ *images/00.jpgは画像です。
127
+ images/01.gifは画像ではありません。
128
+ *images/02.gifは画像です。
129
+ images/03.pngは画像ではありません。
130
+ images/04.psdは画像ではありません。
131
+ images/05.psdは画像ではありません。
132
+ images/06.bmpは画像ではありません。
133
+ *images/07.bmpは画像です。
134
+ *images/08.jpgは画像です。
135
+ *images/09.jpgは画像です。
136
+ *images/10.pngは画像です。
137
+ *images/11.jpgは画像です。
138
+ ```
139
+ こちらの場合だとPSDファイルがサポートされていない?ので
140
+ PSDファイルを画像だとは判定できない。
141
+
142
+ 基本的にファイルを画像として読み込めるかどうかで判定を行っている。

2

修正

2017/07/19 07:28

投稿

退会済みユーザー
answer CHANGED
@@ -5,6 +5,7 @@
5
5
  エラーが出るかどうかで判断しています。
6
6
 
7
7
  #追記
8
+ [ファイルのヘッダについて](http://d.hatena.ne.jp/lira586_ps/20040704/p4)
8
9
  [バイナリデータのヘッダを正規表現でチェック](https://www.gfd-dennou.org/arch/morikawa/memo/binary_regexp_check.htm)
9
10
  [バイナリーエディタがあればファイルタイプが分かる!たぶん。](https://www.webimpact.co.jp/banchoblog/?p=1055)
10
11
  [画像ファイルのフォーマットをバイナリデータ処理で判別](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)

1

修正

2017/07/19 05:53

投稿

退会済みユーザー
answer CHANGED
@@ -2,4 +2,25 @@
2
2
  ImageMagickも分かりません。
3
3
 
4
4
  プログラミング初心者の私は処理してみて
5
- エラーが出るかどうかで判断しています。
5
+ エラーが出るかどうかで判断しています。
6
+
7
+ #追記
8
+ [バイナリデータのヘッダを正規表現でチェック](https://www.gfd-dennou.org/arch/morikawa/memo/binary_regexp_check.htm)
9
+ [バイナリーエディタがあればファイルタイプが分かる!たぶん。](https://www.webimpact.co.jp/banchoblog/?p=1055)
10
+ [画像ファイルのフォーマットをバイナリデータ処理で判別](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)
11
+ [画像のファイルタイプをバイナリヘッダで判定する](http://qiita.com/tetsuya/items/345116e8c545f4de981b)
12
+ [バイナリーデータから画像の種類を判別する](http://nodamushi.hatenablog.com/entry/20110121/1295572551)
13
+
14
+ ImageMagickでもエラーで判定するのならそれ以外の方法で
15
+ 簡単なものを、ということでバイナリデータのヘッダで
16
+ 確認する方法を紹介してみます。
17
+
18
+ 私はバイナリファイルに詳しくないのでどの程度正確なのか
19
+ 画像ファイルによって、正規表現をどうすれば良いのかは
20
+ 分かりません。
21
+
22
+ 私自身がブラウザのキャッシュから画像を判別してファイル名を
23
+ 拡張子付きのものに変更して見られるようにするということを
24
+ やったときに利用した方法です。(コードは[こちら](https://teratail.com/questions/60605)の私の回答)
25
+
26
+