必要に迫られたのでつくってみました。jpgファイルをbmpファイルに一括変換。ほかにもgifやpngも相互に変換できるようなものを作成しました。
パネルのうえにドロップされたら
ドロップされたファイルと同じフォルダにoutputというフォルダを作成する
ドロップされたファイルが画像ファイルかどうか調べる
ラジオボタンの状態からbmp、jpg、png、gifファイルに変換する
画像ファイルかどうかは、Image.FromFileメソッドが成功するかどうかで判断して、成功したらImage.Saveメソッドで保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
public partial class Form1 : Form { public Form1() { InitializeComponent(); panel1.DragOver += Panel1_DragOver; panel1.DragDrop += Panel1_DragDrop; } private void Panel1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] files = (string [])e.Data.GetData(DataFormats.FileDrop); int succsessCount = 0; foreach (var file in files) { FileInfo info = new FileInfo(file); string outputFolder = info.DirectoryName + "\\output"; if (!Directory.Exists(outputFolder)) Directory.CreateDirectory(outputFolder); if (info.Attributes.HasFlag(FileAttributes.Directory)) continue; if(radioButtonBmp.Checked && ToBmpFile(file, outputFolder)) succsessCount++; if (radioButtonJpg.Checked && ToJpgFile(file, outputFolder)) succsessCount++; if (radioButtonPng.Checked && ToPngFile(file, outputFolder)) succsessCount++; if (radioButtonGif.Checked && ToGifFile(file, outputFolder)) succsessCount++; } string ret = String.Format("{0}件の処理が完了しました", succsessCount); MessageBox.Show(ret); } } bool ToBmpFile(string sourcePath, string outputFolderPath) { try { Image image = Image.FromFile(sourcePath); FileInfo info = new FileInfo(sourcePath); string name = info.Name; int index = name.IndexOf("."); string outputPath = ""; if (index != -1) { outputPath = outputFolderPath + "\\" + name.Substring(0, index) + ".bmp"; image.Save(outputPath, System.Drawing.Imaging.ImageFormat.Bmp); } image.Dispose(); } catch { return false; } return true; } bool ToJpgFile(string sourcePath, string outputFolderPath) { try { Image image = Image.FromFile(sourcePath); FileInfo info = new FileInfo(sourcePath); string name = info.Name; int index = name.IndexOf("."); string outputPath = ""; if (index != -1) { outputPath = outputFolderPath + "\\" + name.Substring(0, index) + ".jpg"; image.Save(outputPath, System.Drawing.Imaging.ImageFormat.Jpeg); } image.Dispose(); } catch { return false; } return true; } bool ToPngFile(string sourcePath, string outputFolderPath) { try { Image image = Image.FromFile(sourcePath); FileInfo info = new FileInfo(sourcePath); string name = info.Name; int index = name.IndexOf("."); string outputPath = ""; if (index != -1) { outputPath = outputFolderPath + "\\" + name.Substring(0, index) + ".png"; image.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png); } image.Dispose(); } catch { return false; } return true; } bool ToGifFile(string sourcePath, string outputFolderPath) { try { Image image = Image.FromFile(sourcePath); FileInfo info = new FileInfo(sourcePath); string name = info.Name; int index = name.IndexOf("."); string outputPath = ""; if (index != -1) { outputPath = outputFolderPath + "\\" + name.Substring(0, index) + ".gif"; image.Save(outputPath, System.Drawing.Imaging.ImageFormat.Gif); } image.Dispose(); } catch { return false; } return true; } private void Panel1_DragOver(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.All; } } |