Пример #1
0
 private void aviSaveAs()
 {
     try
     {
         OleDbConnection conn = bc.GetConn();
         conn.Open();
         OleDbCommand cmd = new OleDbCommand("select strPath from tb_VideoPath where ID=1", conn);
         string       str = cmd.ExecuteScalar().ToString().Trim();
         FileInfo     fi  = new FileInfo(str);
         if (fi.Exists)
         {
             fi.Delete();
         }
         conn.Close();
         aviWriter = new AVIWriter();
         //avi中所有图像皆不能小于width及height
         avi_frame = aviWriter.Create(str, 1, SWidth, SHeight);
         for (int i = 0; i < al.Count; i++)
         {
             //获得图像
             Bitmap cache = new Bitmap(Image.FromFile(al[i].ToString()));
             //由于转化为avi后呈现相反,所以翻转
             cache.RotateFlip(RotateFlipType.Rotate180FlipX);
             //载入图像
             aviWriter.LoadFrame(cache);
             aviWriter.AddFrame();
         }
         aviWriter.Close();
         avi_frame.Dispose();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Пример #2
0
        private void Rendering()
        {
            //if (RecordingType == 0)
            //{
            //    int width = 750;
            //    int height = 750;
            //    DateTime time = System.DateTime.Now;
            //    //create instance of video writer
            //    VideoFileWriter writer = new VideoFileWriter();
            //    //create new video file
            //    writer.Open("Recording/vedio/" + time.Year + "-" + time.Month + "-" + time.Day
            //        + " " + time.Hour + "." + time.Minute + "." + time.Second
            //        + ".avi", width, height, 96, VideoCodec.MPEG4);
            //    //create a bitmap to save into the video file
            //    int now = liTime[0];
            //    int liTimePosition = 0;
            //    for (int i = 0; i < liTime[liTime.Count - 1]; i++)
            //    {
            //        if (i > now)
            //        {
            //            liTimePosition++;
            //            now = liTime[liTimePosition];
            //        }
            //        System.Drawing.Bitmap image = new System.Drawing.Bitmap(AppDomain.CurrentDomain.BaseDirectory + "\\Recording\\Temp\\" + (liTimePosition + 1) + ".png");
            //        writer.WriteVideoFrame(image);
            //    }
            //    //DirectoryInfo TheFolder = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Recording\\Temp");
            //    //foreach (FileInfo NextFile in TheFolder.GetFiles())
            //    //{
            //    //    int nIndex = NextFile.Name.LastIndexOf('.');
            //    //    String filename = NextFile.Name;
            //    //    if (nIndex >= 0)
            //    //    {
            //    //        filename = filename.Substring(nIndex);
            //    //        if (filename.Equals(".png"))
            //    //        {
            //    //            System.Drawing.Bitmap image = new System.Drawing.Bitmap(AppDomain.CurrentDomain.BaseDirectory + "\\Recording\\Temp\\" + NextFile.Name);
            //    //            //NextFile.Name
            //    //            writer.WriteVideoFrame(image);
            //    //        }
            //    //    }
            //    //}
            //    writer.Close();
            //}

            DateTime time = System.DateTime.Now;
            //org.loon.util.FileUtil file = new org.loon.util.FileUtil();
            AVIWriter aviWriter = new AVIWriter();

            //ps:avi中所有图像皆不能小于width及height
            System.Drawing.Bitmap avi_frame = aviWriter.Create(AppDomain.CurrentDomain.BaseDirectory + "/Recording/vedio/" + time.Year + "-" + time.Month + "-" + time.Day
                                                               + " " + time.Hour + "." + time.Minute + "." + time.Second
                                                               + ".avi", 96, 750, 750);
            int now            = liTime[0];
            int liTimePosition = 0;

            for (int i = 0; i < liTime[liTime.Count - 1]; i++)
            {
                if (i > now)
                {
                    liTimePosition++;
                    now = liTime[liTimePosition];
                }
                //获得图像
                System.Drawing.Bitmap image = new System.Drawing.Bitmap(AppDomain.CurrentDomain.BaseDirectory + "\\Recording\\Temp\\" + (liTimePosition + 1) + ".png");

                //由于转化为avi后呈现相反,所以翻转
                image.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX);
                //载入图像
                aviWriter.LoadFrame(image);
                aviWriter.AddFrame();
            }

            //释放资源
            aviWriter.Close();
            avi_frame.Dispose();
        }
Пример #3
0
        void ConvertDicom2AVIFormat(object o)
        {
            float nPercent             = 0;
            ConvertProcessEventArgs ev = new ConvertProcessEventArgs(0);

            #region 多帧文件存在

            if (File.Exists(strMultiFrameDicomFileName))
            {
                AVIWriter aviWriter = new AVIWriter();

                DicomFile dcmFile = DicomFile.Open(strMultiFrameDicomFileName);


                dcmFile.Dataset.Get <string>(DicomTag.SOPInstanceUID, "");

                int bmWidth  = Convert.ToInt16(dcmFile.Dataset.Get <string>(DicomTag.Columns, ""));
                int bmHeight = Convert.ToInt16(dcmFile.Dataset.Get <string>(DicomTag.Rows, ""));

                string strDestFile = strOutPutAVIName;

                aviWriter.Create(strDestFile, (UInt16)nFrs, bmWidth, bmHeight);

                try
                {
                    for (int i = nBeginFrame; i < nEndFrame; i++)
                    {
                        DicomFile  tmpFile      = dcmFile.Clone();
                        DicomImage dcmSingleImg = new DicomImage(tmpFile.Dataset);
                        Image      img          = dcmSingleImg.RenderImage(i);
                        Bitmap     bmp          = new Bitmap(img);
                        bmp.RotateFlip(RotateFlipType.Rotate180FlipX);
                        aviWriter.LoadFrame(bmp);
                        aviWriter.AddFrame();
                        if (nEndFrame == 0)
                        {
                            nEndFrame = Convert.ToInt16(dcmFile.Dataset.Get <string>(DicomTag.NumberOfFrames, ""));
                        }
                        float f = (float)100 / (float)nEndFrame - nBeginFrame;
                        nPercent += f;
                        string s = nPercent.ToString(("#.##"));
                        ev.LastPercent = ev.Percent;
                        ev.Percent     = Convert.ToSingle(s);
                        callback(nPercent);
                        Thread.Sleep(1);
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
                finally
                {
                    aviWriter.Close();
                }
            }
            #endregion

            #region 单帧文件列表存在

            if (listSingleFrameFileName.Count > 0)
            {
                AVIWriter aviWriter = new AVIWriter();

                DicomFile tmp_dcmFile = DicomFile.Open(listSingleFrameFileName[0]);

                int bmWidth  = Convert.ToInt16(tmp_dcmFile.Dataset.Get <string>(DicomTag.Columns, ""));
                int bmHeight = Convert.ToInt16(tmp_dcmFile.Dataset.Get <string>(DicomTag.Rows, ""));


                string strDestFile = strOutPutAVIName;

                aviWriter.Create(strDestFile, (UInt16)nFrs, bmWidth, bmHeight);

                try
                {
                    for (int i = 0; i < listSingleFrameFileName.Count; i++)
                    {
                        tmp_dcmFile = DicomFile.Open(listSingleFrameFileName[0]);
                        DicomFile  tmpFile      = tmp_dcmFile.Clone();
                        DicomImage dcmSingleImg = new DicomImage(tmpFile.Dataset);
                        Image      img          = dcmSingleImg.RenderImage(0);
                        Bitmap     bmp          = new Bitmap(img);
                        bmp.RotateFlip(RotateFlipType.Rotate180FlipX);
                        aviWriter.LoadFrame(bmp);
                        aviWriter.AddFrame();
                        float f = (float)100 / (float)listSingleFrameFileName.Count;
                        nPercent += f;
                        string s = nPercent.ToString(("#.##"));
                        ev.LastPercent = ev.Percent;
                        ev.Percent     = Convert.ToSingle(s);
                        callback(nPercent);
                        Thread.Sleep(1);
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
                finally
                {
                    aviWriter.Close();
                }

                #endregion
            }

            ev.Percent = 100;
        }