Пример #1
0
 void Button3Click(object sender, EventArgs e)
 {
     if (ImageOpen.ShowDialog() == DialogResult.OK)
     {
         b = Image.FromFile(ImageOpen.FileName);
         listView1.BackgroundImage = b;
     }
 }
Пример #2
0
 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;
     }
 }
Пример #3
0
        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;
            }
        }
Пример #4
0
        /// <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--;
        }