none
C#視訊儲存+調整大小 RRS feed

  • 問題

  • 目前連接視訊 和 儲存照片的動作都做好了

    目前我是先儲存圖片以後再讀取圖片調整大小之後重新存檔

    以下是程式碼

        ///↓↓↓↓↓↓↓讀取視訊↓↓↓↓↓↓↓↓↓//
                #region if capture is not created, create it now
                if (_capture == null)
                {
                    try
                    {
                        _capture = new Capture();
                    }
                    catch (NullReferenceException excpt)
                    {
                        MessageBox.Show(excpt.Message);
                    }
                }
                #endregion
                if (_capture != null)
                {
                    if (_captureInProgress)
                    {  //stop the capture
                        Application.Idle -= new EventHandler(ProcessFrame);
                        //captureButton.Text = "Start Capture";
                    }
                    else
                    {
                        //start the capture
                        //captureButton.Text = "Stop";
                        Application.Idle += new EventHandler(ProcessFrame);
                    }
    
                    _captureInProgress = !_captureInProgress;
    


     

     private void capture()
            {  ///↓↓↓↓↓↓↓讀取視訊後每秒照相↓↓↓↓↓↓↓↓↓//
    
               // string name2;
                
                this.captureImageBox.Image.Save("C:\\WEBCAM\\index" + campic + ".jpg");//存圖片進webcam資料夾
                
                PhotoSizeChange2(bmp);//源圖路徑 圖片轉成320*240
                campic++;
    }
    
    
     private System.Drawing.Image PhotoSizeChange2(string strPhoto)//改圖片大小
            {
    
                //strPhoto是原来的图片文件所在的物理路径 
                //处理图片功能 
                System.Drawing.Image image = new Bitmap(strPhoto);//得到原图            
    
                //创建指定大小的图 
    
                System.Drawing.Image newImage = image.GetThumbnailImage(320, 240, null, new IntPtr());
                Graphics g = Graphics.FromImage(newImage);
                //将原图画到指定的图上 
                g.DrawImage(newImage, locx, locy, newImage.Width, newImage.Height);
                g.Dispose();
                newImage.Save("c:\\WEBCAM1\\index" + campic + ".JPG");
                return newImage;
    
            }
    

     

    這樣變成我要用兩個資料夾存兩張圖片

    我想請問一下可以在視訊儲存照片的時候就調整大小嗎?

    也就是說我只要一個資料夾儲存我調整大小後的照片這樣?

    2011年10月14日 上午 11:41

解答

  • 有個方法,可以把調整好的圖檔先命別的名。然後刪掉原檔。如需要再改回原檔名。

    這樣就解決了你的問題。不然可以考慮使用png等,失真的壓縮照片檔。

    其實程式遇見問題改常問自己,“爲什麽”,解決了當前問題,再想辦法改進。

     

    希望這方法幫到你!

    • 已標示為解答 ㄚ奇 2011年10月24日 上午 11:42
    2011年10月15日 下午 09:29
  • 你如果是用內建的 PictureBox / Bitmap 類別,你可以先存到 MemoryStream 後,需要時才存到硬碟。

    new Bitmap 可以從 Stream / Image / File 裡面出來,不用先存到檔案。

    而你整個 PhotoDizeChange2 可以直接用內建 Graphics.DrawImage 取代,沒必要這樣做。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 ㄚ奇 2011年10月24日 上午 11:42
    2011年10月16日 上午 06:08

所有回覆

  • 有個方法,可以把調整好的圖檔先命別的名。然後刪掉原檔。如需要再改回原檔名。

    這樣就解決了你的問題。不然可以考慮使用png等,失真的壓縮照片檔。

    其實程式遇見問題改常問自己,“爲什麽”,解決了當前問題,再想辦法改進。

     

    希望這方法幫到你!

    • 已標示為解答 ㄚ奇 2011年10月24日 上午 11:42
    2011年10月15日 下午 09:29
  • 你如果是用內建的 PictureBox / Bitmap 類別,你可以先存到 MemoryStream 後,需要時才存到硬碟。

    new Bitmap 可以從 Stream / Image / File 裡面出來,不用先存到檔案。

    而你整個 PhotoDizeChange2 可以直接用內建 Graphics.DrawImage 取代,沒必要這樣做。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 ㄚ奇 2011年10月24日 上午 11:42
    2011年10月16日 上午 06:08