Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > เกิดปัญหาเรื่องการ save ภาพ ของ file Stream (code C#)



 

เกิดปัญหาเรื่องการ save ภาพ ของ file Stream (code C#)

 



Topic : 043459



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์




มันเกิดขึ้นประมาณว่า ถ้ารันเมือทำงานไปได้ขั้นตอนแรก-(sent email) เสร็จ ก็จะเกิด error ที่ AddFilter(img, "PicEnhance_1.bmp"); แล้วถ้าไม่มีการใช้ AddFilter(); ก็จะเกิด error ในส่วนของ FileStream ว่ามีการทำงานของโปรเซสอื่นอยู่ในการใช้ fileStream

Code (C#)


        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            imgCapture.Image = imgVideo.Image;
            SaveCap.SaveImageCapture(imgCapture.Image);
            Bitmap img = new Bitmap(imgCapture.Image);
            AddFilter(img, "PicEnhance_1.bmp");      // ถ้าใช้แบบนี้จะเกิดปัญหาตรงนี้
            FileStream fs = new FileStream("C:\\Picture_1.bmp", FileMode.Open);
            imgShow1.Image = Image.FromStream(fs);
            fs.Close();
            timer2.Enabled = true;              
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            timer2.Enabled = false;
            imgCapture.Image = imgVideo.Image;
            Helper2.SaveImageCapture2(imgCapture.Image);
            Bitmap img2 = new Bitmap(imgCapture.Image);
            AddFilter(img2, "PicEnhance_2.bmp");
            FileStream fs = new FileStream("C:\\Picture_2.bmp", FileMode.Open); // แล้วตรงนี้จะฟ้องว่ามีการใช้งานโดยส่วนอื่น
            imgShow2.Image = Image.FromStream(fs);
            fs.Close();
            CompareImages();
            if (Math.Abs(A1 - B1) >= 3)
            {
                SendMailAttTo();   //ส่ง email 
                B1 = A1;
            } 
            timer1.Enabled = true;
        }
       //======================
       private void AddFilter(Bitmap image, string fileName)
        {
            //Filter_GrayScale(image);
            image.Save("C:\\" + fileName);
            image.Dispose();
        }
       //======================
       private void CompareImages()
        {

            FileStream fs;
            fs = new FileStream("C:\\PicEnhance_1.bmp", FileMode.Open);
            Bitmap bmp1 = new Bitmap(fs);
            BitmapFilter.Contrast(bmp1, 30);
            BitmapFilter.EdgeDetectDifference(bmp1, 20);
            fs.Close();
            File.Delete("C:\\PicEnhance_1.bmp");
            bmp1.Save("C:\\PicEnhance_1.bmp");
            fs = new FileStream("C:\\PicEnhance_2.bmp", FileMode.Open);
            Bitmap bmp2 = new Bitmap(fs);
            BitmapFilter.Contrast(bmp1, 30);
            BitmapFilter.EdgeDetectDifference(bmp2, 20);
            fs.Close();
            File.Delete("C:\\PicEnhance_2.bmp");
            bmp1.Save("C:\\PicEnhance_2.bmp");

                Color c1, c2;
                int width, height, diff;
                diff = 0;
                width = bmp1.Width; height = bmp1.Height;
                for (int i = 0; i < width; i++)
                {
                    for (int j = 0; j < height; j++)
                    {
                        c1 = bmp1.GetPixel(i, j);
                        c2 = bmp2.GetPixel(i, j);
                        if (!c1.Equals(c2))
                        {
                            diff++;
                        }
                    }
                }
                progressBar1.Value = ((diff * 100) / 76800);
                label1.Text = ((diff * 100) / 76800) + " %";
                A1 = (int)progressBar1.Value;

          }





Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-05-31 05:09:09 By : Takezeed View : 4483 Reply : 7
 

 

No. 1



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


^ ^ เก่งนะคะ ช่วยแฟนทำ project ตลอด คราวต่อไปทำ project ตัวเองคงง่ายขึ้นละ
แฟนคุณโชคดีนะคะ มีคุณเอาใจใส่อย่างดีแบบนี้อะวันหลังให้เค้ามาโพสเองก็ได้มังคะ
งานเค้านี่ เห็นคุณโพสช่วยแฟนคุณตั้งกะเริ่มแรกละให้เค้ามาโพสเองดีกว่าค่ะ

เท่าที่สังเกตุ คุณเอ้ยแฟนคุณใช้ชื่อ File คงที่ตลอด เป็นไปได้ว่าจการเขียนไฟล์รอบแรกยังไม่เสร็จ
รอบสองก็มาถึงแล้ว เลยน่าจะ error ค่ะ ต้องบอกว่าน่าจะเป็นเพราะ ไม่มี source code ทั้งหมด
ของแฟนคุณ และถึงมีก็อาจจะ run ไม่ได้เพราะค่าต่างๆ ไม่เหมือนกัน

ลองให้แฟนคุณเปลี่ยนชื่อไฟล์ตามเวลาที่บันทึกหรือหาค่า counter เพื่อป้องกันการใช้ชื่อไฟล์เดิมน่ะค่ะ
ส่วน code น่าจะเขียนเองได้นะคะไม่อยากเลย แฟนคุณเก่งอยู่แล้วค่ะทำได้ค่ะ

ส่วนจะ error จาก GDI+ คงไม่น่าใช่เพราะใช้ BMP ธรรมดาๆ ซึ่งเป็นพื้นฐานอยู่แล้ว

อีกเรื่องนึงคือการทำ image processing นี่มี opensource library ให้กันมานานแล้วนะคะ
ไปนั่งอ่านสักนิดแล้วเอามาต่อยอด จะทำให้เขียนง่ายกว่ามั้ย อันนี้ก้อแนะนำค่ะ
ส่วนอยู่ตรงไหนก็ให้ถาม google นะคะ มากันเยอะเลย แต่ทั้งนี้อยู่ที่เวลาของ project
ว่ากำหนดส่งเมื่อไหร่ จะทันไหมไปปรึกษากันกะแฟนคุณสองคนค่ะ

ปล.ท่านผู้อ่านคนอื่นอาจจะสงสัยว่าทำไม บอกให้น้องเค้าไปปรึกษาแฟน
เพราะน้องคนนี้อยู่ปี 2 ค่ะ อยากช่วนแฟนที่เรียนปีสุดท้ายทำ project
เลยช่วยอำนวยความสะดวกมาตั้งแต่เริ่มทำละ
น้องเค้าเก่งมากเลย แต่ยังไงก็ให้แฟนน้องเค้าทำเองจะดีกว่าเพราะเป็นงานของเค้าเองเนอะ







Date : 2010-05-31 05:53:06 By : blurEyes
 


 

No. 2



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


มันก็มีหลายวิธีนะที่จะแก้ปัญหา ทางที่ดีควรเก็บรูปเป็น memory stream ดีกว่าไม่ต้องเขียนเป็นไฟล์หรอก

เสร็จแล้วถ้ามีหลายรูปก็สร้าง list collection ให้กับ memory stream จะได้ใช้งานได้ง่ายๆ

ผมไม่รู้ว่ากล้องมันให้ output ออกมาเป็น steam หรือ file ถ้าเป็น stream ก็ add ลง collection ได้เลย

ส่วนถ้าเป็น file ก็ต้องแปลงเป็น steam ก่อน แล้วก็ลบไฟล์ทิ้งไปเลยก็ได้จะได้ไม่เปลืองพื้นที่

วิธีการแปลง file เป็น stream
// อ่าน binary file เก็บลง buffer
byte[] byteArray = File.ReadAllByte(@"C:\PicEnhance_1.bmp");

// เอา buffer เก็บลง memory stream
MomoryStream memoryStream = new MomoryStream(byteArray);

// เพิ่ม memory stream ลงใน collection
List<MomoryStream> Streamcollection = new List<MomoryStream>();
Streamcollection.Add(memoryStream);


แค่นี้ก็ไม่ตรงอ่านจากไฟล์แล้ว แก้ปัญหา process ซ้อน

ส่วน AddFilter นี่ใช่ทำรูปเป็นขาวดำ (ไม่ใช่ gray scale) หรือเปล่า ถ้าใช่ลองหาดูล่างๆ ตอบไว้เดือนกว่าๆ แล้ว

หาไม่เจอลองหาดู
Date : 2010-05-31 09:09:34 By : tungman
 

 

No. 3



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ก็เห็นด้วยกับ blueeyes นะ น่าจะให้เขาเป็นตัวหลักเพราะนี่ก็งานเขา แต่ถ้ายินยอมลำบาก

ก็ไม่เป็นไร เป็นเรื่องส่วนตัวทางแก็งค์ไม่ขอยุ่ง ไปตกลงกันเอาเอง ส่วนเราก็ทำหน้าที่ของเรากันต่อไป

ก็คือตอบเกรียนๆ ไปวันๆ ฝึกมือหาความรู้เข้าตัวกัน มีสาระบ้างไม่มีบ้างกันตามประสาของเราเถิด
Date : 2010-05-31 09:56:44 By : tungman
 


 

No. 4



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


เขาทำเองคะ แค่หนูโพสในเว็บให้ เขาพูดให้หนูพิมพ์ ก็งงเหมือนกันว่าทำไมไม่สมัครมาถามเอง

ขอบคุณมากนะคะ
Date : 2010-06-01 00:47:16 By : Takezeed
 


 

No. 5



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


บัดนั้นถึงบัดนี้ ก็ยังไม่ได้อ่ะคะ พยายามหาข้อมูลก็ยังติดอ่ะคะ ใช้ collection ไม่เป็นด้วย พอจะมีเว็บให้ศึกษาเรื่อง stream memory กับ collection บ้างไหมคะ
Date : 2010-06-07 01:26:44 By : Takezeed
 


 

No. 6



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


https://www.thaicreate.com/dotnet/forum/043583.html

ตรง byte[] imageBytes = Security.DecryptStream......

ถ้าไม่ได้ encrypt ก็อ่านจาก file โดยตรงก็เปลี่ยนเป็น byte[] imageBytes = File.ReadAllBytes(InputFilePath);

แล้วก็ทำเป็น memory stream ได้เลย
Date : 2010-06-07 08:31:36 By : tungman
 


 

No. 7



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เฮ้ย! ตูตอบไปแล้วนี่หว่าตั้งแต่ no.2 ยังไม่ได้อีกเหรอ

หรืองงเรื่อง list collection

การใช้ list มันคล้ายๆ array เราก็ใช้ index ในการอ้างอิง เช่น

Code (C#)
// เอา buffer เก็บลง memory stream
MomoryStream memoryStream = new MomoryStream(byteArray);

// เพิ่ม memory stream ลงใน collection
List<MomoryStream> Streamcollection = new List<MomoryStream>();
Streamcollection.Add(memoryStream);

//เวลาอ้างอิง
Streamcollection[0];


ถ้ามีเยอะๆ ก็วนลูปเอา
Date : 2010-06-07 09:14:03 By : tungman
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เกิดปัญหาเรื่องการ save ภาพ ของ file Stream (code C#)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่