Ejemplo n.º 1
0
        /// <summary>
        /// 画像を一時フォルダにコピー
        /// </summary>
        /// <param name="filePath">コピー元画像ファイルパス</param>
        /// <returns>処理結果タプル(成功/失敗、成功した場合のファイル名、失敗した場合のエラーメッセージ)</returns>
        private Tuple <bool, string, string> CopyImageFileToTemp(string filePath)
        {
            // 拡張子取得
            FileInfo file = new FileInfo(filePath);

            if (!file.Exists)
            {
                return(new Tuple <bool, string, string>(false, null, "ファイルが見つかりません。"));
            }

            try
            {
                using (Image image = Image.FromFile(filePath))
                {
                    int selectedRow    = dataGridView1.SelectedCells[0].RowIndex;
                    int selectedColumn = dataGridView1.SelectedCells[0].ColumnIndex;

                    ((DataGridViewImageCell)dataGridView1[selectedColumn - 1, selectedRow]).ValueIsIcon = false;

                    // 縮小イメージを取得
                    Image convertedImage = ImageUtility.ConvertImageSize(image);

                    // 画面を閉じるときにDisposeできるようにしておく。
                    _disposeItems.Add(convertedImage);

                    // 縮小イメージを設定
                    dataGridView1[selectedColumn - 1, selectedRow].Value = convertedImage;
                }
            }
            catch (Exception)
            {
                return(new Tuple <bool, string, string>(false, null, "選択されたファイルはイメージファイルではありません。"));
            }

            // 新しいイメージファイル名生成
            string currentImageFileName = string.Format(IMAGE_FILE_DEFAULT_NAME, _fileCount++, file.Extension);

            if (!Directory.Exists(_tempFolderPath))
            {
                // 一時フォルダがない場合は作成
                Directory.CreateDirectory(_tempFolderPath);
            }

            try
            {
                // 一時フォルダにイメージファイルをコピー
                File.Copy(filePath, Path.Combine(_tempFolderPath, currentImageFileName));
            }
            catch (Exception)
            {
                return(new Tuple <bool, string, string>(false, null, "イメージファイルのコピーに失敗しました。"));
            }

            // 処理に成功した時は新しいイメージファイル名を返す
            return(new Tuple <bool, string, string>(true, currentImageFileName, null));
        }