2016-10-07 2 views
0

을 PNG로 바이트 배열이 같은 바이트 배열로 32 비트 심도 PNG 파일 (1 개 화소 4 바이트)을로드 :C# - 내 코드에서 파일

//Pick a file 
OpenFileDialog FileValaszto = new OpenFileDialog(); 
FileValaszto.ShowDialog(); 

//Create BitmapImage 
BeolvasottKep = new BitmapImage(new Uri(FileValaszto.FileName)); 

//Create byte array 
stride = BeolvasottKep.PixelWidth * 4; 
int size = BeolvasottKep.PixelHeight * stride; 
MyPixelsArray = new byte[size]; 
BeolvasottKep.CopyPixels(pixels, stride, 0); 

I는 픽셀 조작 마치면 "MyPixelsArray"데이터를 새로운 PNG 이미지 파일에 다시 저장하고 싶습니다. 오직 나는 할 수 없다 ...

나는 그물을 검색하는 데 하루 이상을 보냈지 만,이 정확한 문제에 대한 해결책은 없다. 어떤 도움을 주시면 감사하겠습니다. 감사!

+0

도움이 희망을 시도 ,이 링크는 아마 당신을 도와줍니다 http://stackoverflow.com/questions/1922040/resize-an-image-c-sharp – Rumpelstinsk

+0

당신이 정확히 달성하고 싶은 것을 설명 할 수 있습니까? – Pikoh

+0

달성하고자하는 것 : 1, bytearray에 PNG 파일로드 (완료) 2,이 바이트 배열을 조작하여 그림 변경 (완료) 3,이 바이트 배열을 하드 드라이브의 PNG 파일에 다시 저장하십시오. (완료되지 않음, 그러므로 질문) – Broadroad

답변

0

테스트되지 않았지만 작동 할 수도 있습니다. 난 당신이 당신의 이미지 크기를 조정하려는 경우 그것은 당신에게

//Pick a file 
     OpenFileDialog FileValaszto = new OpenFileDialog(); 
     FileValaszto .ShowDialog(); 

     //Create BitmapImage 
     BeolvasottKep = new BitmapImage(new Uri(FileValaszto.FileName)); 

     //Create byte array 
     stride = BeolvasottKep.PixelWidth * 4; 
     int size = BeolvasottKep.PixelHeight * stride; 

     MemoryStream ms = new System.IO.MemoryStream(stride); 
     Image i = Image.FromStream(ms); 
+0

그렇다면 i.Save ('filepath', System.Drawing.Imaging.ImageFormat.png); – kevinc

+0

친절한 도움을 주셔서 감사합니다 !!! 문제가 해결되었습니다. – Broadroad

+0

안녕하세요. Broadroad, 해결 방법에 대해 말씀해 주시겠습니까? 감사. –