今までblogにアップしていた、画像ファイルのサイズが大きすぎたのでまとめてリサイズするプログラムがほしかったので作ってみました。
まとめて処理できたら楽なのでドラッグ&ドロップできるように。。。
Drag&Dropされたファイルのファイル名を取得する

listBox1_DragDropとlistBox1_DragEnterは上記ページからの丸写しです(汗
listboxのAllowDropTrueにしておかないとダメです。



ソース


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DragDropAPP
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void listBox1_DragDrop(object sender, DragEventArgs e)
        {
            //コントロール内にドロップされたとき実行される
            //ドロップされたすべてのファイル名を取得する
            string[] fileName =
                (string[])e.Data.GetData(DataFormats.FileDrop, false);
            //ListBoxに追加する
            listBox1.Items.AddRange(fileName);
        }

        private void listBox1_DragEnter(object sender, DragEventArgs e)
        {
            //コントロール内にドラッグされたとき実行される
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                //ドラッグされたデータ形式を調べ、ファイルのときはコピーとする
                e.Effect = DragDropEffects.Copy;
            else
                //ファイル以外は受け付けない
                e.Effect = DragDropEffects.None;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                //ファイル名をフルパスで取得
                String str = listBox1.Items[i].ToString();

                //拡張子を取得
                String ext = System.IO.Path.GetExtension(str);
                if (ExtentionCheck(ext) == true)
                {
                    //画像を半分のサイズに
                    ConvertBmp(str);
                }                
            }
        }

        private bool ExtentionCheck(String ext)
        {
            //拡張子に一致するか
            return System.Text.RegularExpressions.Regex.IsMatch(ext, ".bmp|.png|.jpeg|.jpg");
        }

        private void ConvertBmp(String str)
        {
            Bitmap bitmap = new Bitmap(str);
            Bitmap halfbmp = new Bitmap(bitmap, bitmap.Width / 2, bitmap.Height / 2);

            //ディレクトリ名の取得
            String dir = System.IO.Path.GetDirectoryName(str);
            //ファイル名の取得
            String fname = System.IO.Path.GetFileName(str);
            //新規ファイル名
            String halfname = "half" + fname;
            //新規ファイル名をフルパスで保存
            halfbmp.Save(dir + "\\" +halfname);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //リストをすべてクリア
            listBox1.Items.Clear();
        }
    }
}



Related Entries
Comments
Post a comment
Contributor
Comment
Trackbacks URL
URL
Permalink
Trackbacks
FC2カウンター
プロフィール

詠み人知らず

Author:詠み人知らず
プログラム好きな名もなき凡人がお送りしています。(得意とは言っていない
最近の興味はPython、C#、Matlab(Octave)、画像処理、AR(拡張現実)、統計などなど・・・

気分で思いついたことを書くため話題に一貫性がないかもしれません。

カレンダー
03 | 2017/04 | 05
- - - - - - 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 - - - - - -
最新記事
タグクラウドとサーチ

カテゴリ
最新コメント
最新トラックバック
月別アーカイブ