void Button3Click(object sender, EventArgs e) { if (ImageOpen.ShowDialog() == DialogResult.OK) { b = Image.FromFile(ImageOpen.FileName); listView1.BackgroundImage = b; } }
private void button1_Click(object sender, EventArgs e) { if (ImageOpen.ShowDialog() == DialogResult.OK) { textBox1.Text = ImageOpen.FileName; pictureBox1.Load(ImageOpen.FileName); original_image = pictureBox1.Image; label1.ForeColor = Color.Green; } }
private void b2t_openButton_Click_1(object sender, EventArgs e) //파일 열기 버튼 구현 { string openstrFilename; ImageOpen.Title = "점자 파일 열기"; ImageOpen.Filter = "JPEG File(*.jpg)|*.jpg|Bitmap File(*.bmp)|*.bmp"; // 다이얼로그의 확인 처리 if (ImageOpen.ShowDialog() == DialogResult.OK) { openstrFilename = ImageOpen.FileName; openImg = new Image <Bgr, byte>(openstrFilename); b2t_openImageBox.Image = openImg; //b2t_openImageBox.Visible = true; } }
/// <summary> /// 列表交叉并合成,不出意外应该是最好的方法 /// </summary> /// <param name="merger_lists">需要处理的文件组的列表</param> /// <param name="needListLen">需要处理的列表数量,主要是内部迭代用。</param> internal void ListXListAndMerge(List <string[]> merger_lists, List <bool?> mustNeedInfoList, int needListLen, ImageOpen inputImage = null) { semaphore.WaitOne(); workingCount++; try { if (needListLen < 1) { //needListLen必定大于等于1,不然就是index超出范围 throw new IndexOutOfRangeException("卧槽怎么做到0个group合成的?"); } if (merger_lists[0].Count() == 0 && GlobalScheme.IsRegexMode) { return; //正则模式下,第一位图片为空就不合成,避免出现奇怪的合成(第二第三合出一个只有头那种) } //如果中间某个列表为空,会造成无法处理后续列表的情况 if (merger_lists[merger_lists.Count - needListLen].Count() == 0) { if (needListLen > 1) { Task.Run(new Action(() => ListXListAndMerge(merger_lists, mustNeedInfoList, needListLen - 1, inputImage))); } else if (inputImage != null && inputImage.MergedCount > 0 && inputImage.SavedSign == 0) { inputImage.Save(); GlobalScheme.MergedCount++; } else { StatusPrint("请输入图片!"); } } //如果这个Grou非必选,要分开原图和合成后图片处理 if (merger_lists[merger_lists.Count - needListLen].Count() != 0 && mustNeedInfoList[merger_lists.Count - needListLen] != true && inputImage != null) { if (needListLen > 1) { Task.Run(new Action(() => ListXListAndMerge(merger_lists, mustNeedInfoList, needListLen - 1, inputImage))); } } foreach (var file in merger_lists[merger_lists.Count - needListLen]) { ImageOpen baseImage; if (inputImage == null) { lock (locker) { //一般第一个组就会变成这种情况,会作为base图片处理 baseImage = new ImageOpen(file); } } else { ImageOpen diffImage; lock (locker) { diffImage = new ImageOpen(file); } //baseImage = inputImage.Clone(); baseImage = PicMerger.Merger(inputImage, diffImage, int.Parse(GlobalScheme.MergerComboSelect), !Scheme.PAChecked); } if (needListLen > 1) { Task.Run(new Action(() => ListXListAndMerge(merger_lists, mustNeedInfoList, needListLen - 1, baseImage))); } else { if (baseImage.MergedCount > 0 && baseImage.SavedSign == 0) { baseImage.Save(); GlobalScheme.MergedCount++; //baseImage.Save(); StatusPrint("已合成" + GlobalScheme.MergedCount.ToString() + "张"); } if (mustNeedInfoList[merger_lists.Count - needListLen] != true && inputImage.MergedCount > 0 && inputImage.SavedSign == 0) { inputImage.Save(); //inputImage.Save(); GlobalScheme.MergedCount++; StatusPrint("已合成" + GlobalScheme.MergedCount.ToString() + "张"); } } //baseImage.Close(); } } catch (Exception ex) { var x = ex.Message; GlobalScheme.MergedErrorCount++; } finally { workingCount--; } semaphore.Release(); //workingCount--; }