タスク別ヘルプ > zip ファイルから画像を取得する |
この例では、2個のボタンと1個のリストボックスを使用して、.zip ファイルから画像を取得する方法を示します。
zip ファイルから画像を直接取得するために、最初に、いくつかの画像ファイルを1つの zip ファイルに圧縮するコードを追加します。この例では、btnNew_Click イベントにこのコードを追加します。ここで、ボタンがクリックされたときに画像の新しい .zip ファイルを作成します。
コードのコピー
|
|
---|---|
' リソースディレクトリにある画像のリストを構築し、すべての画像を zip ファイルに追加します。 Dim zip As New C1ZipFile() Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' アプリケーションディレクトリを取得します。 Dim s As String = Application.ExecutablePath s = s.Substring(0, s.IndexOf("\bin")) + "\resources" ' zip ファイルを作成します。 zip.Create((s + "\images.zip")) ' zip ファイルに画像を格納し、リストを作成します。 Dim f As String For Each f In Directory.GetFiles(s) Dim fname As String = f.ToLower() ' 自分自身はスキップします。 If fname.EndsWith("zip") Then GoTo ContinueForEach1 End If ' リストに追加します。 ListBox1.Items.Add(Path.GetFileName(fname)) ' zip ファイルに追加します。 zip.Entries.Add(fname) ContinueForEach1: Next f End Sub |
コードのコピー
|
|
---|---|
// リソースディレクトリにある画像のリストを構築し、すべての画像を zip ファイルに追加します。 C1ZipFile zip = new C1ZipFile(); private void Form1_Load(object sender, System.EventArgs e) { // アプリケーションディレクトリを取得します。 string s = Application.ExecutablePath; s = s.Substring(0, s.IndexOf(@"\bin")) + @"\resources"; // zip ファイルを作成します。 zip.Create(s + @"\images.zip"); // zip ファイルに画像を格納し、リストを作成します。 foreach (string f in Directory.GetFiles(s)) { string fname = f.ToLower(); // 自分自身はスキップします。 if (fname.EndsWith("zip")) continue; // リストに追加します。 listBox1.Items.Add(Path.GetFileName(fname)); // zip ファイルに追加します。 zip.Entries.Add(fname); } } |
画像を選択できるようにするには、画像データを含むストリームを取得し(OpenReader メソッド)、次のコードを listBox1_SelectionChanged イベントと StreamCopy イベントに追加します。
コードのコピー
|
|
---|---|
' 選択された画像を表示します。 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged ' 選択された項目を取得します。 Dim item As String = CStr(listBox1.SelectedItem) ' 画像を圧縮ストリームから直接ロードします。 Dim s As Stream = zip.Entries(item).OpenReader() Try pictureBox1.Image = CType(Image.FromStream(s), Image) Catch End Try ' ストリームを閉じます。 s.Close() End Sub |
コードのコピー
|
|
---|---|
// 選択された画像を表示します。 private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { // 選択された項目を取得します。 string item = (string)listBox1.SelectedItem; // 画像を圧縮ストリームから直接ロードします。 Stream s = zip.Entries[item].OpenReader(); try { pictureBox1.Image = (Image)Image.FromStream(s); } catch {} // ストリームを閉じます。 s.Close(); } |
ICO、TIFF、BMP、JPG などのいくつかのタイプの画像が表示されます。