이미지를 보내는 방법에 대한 이전 질문에 도움을 받았습니다. 완료 한 것은 처음에 이미지의 크기 (크기)를 전송 한 다음 실제 이미지를 전송 한 다음 완료되었을 때 알 수있었습니다.NetworkStream 내 코드에서 이해할 수없는 것
IT는 다음과 같습니다 : 내 이전 질문에서 저를 도와 안젤로 Geels :
BinaryWriter writer = new BinaryWriter(netStream);
while (someCondition) {
Image img = SomeImage();
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] buffer = new byte[ms.Length];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(buffer, 0, buffer.Length);
writer.Write(buffer.Length);
writer.Write(buffer);
이 코드에서입니다.
이제는이 방법으로 최적화하려고했습니다. 그리고 잘 작동합니다. 그러나 파일이 bmp (압축되지 않은 경우) 일 때만, 나는 이유를 알지 못합니다.
using (MemoryStream ms = PrintWindow(process))
{
writer.Write((int)ms.Length);
writer.Write(ms.GetBuffer());
}
그래서 PrintWindow는 이미지를 memorystream에 저장하고 반환합니다. 그래서 ms = memorystream에 내 이미지가 있습니다.
그래서 나를 위해 이것은 완벽하게 작동해야합니다. 나는 똑같은 일을 할 수있는 형태를 만듭니다.
나는 파일의 크기 (memorystream의 길이)를 보냅니다. 그런 다음 memorystream에서 byte [] 데이터를 보냅니다.
그래서, 똑같습니다.
하지만 bmp에서만 작동합니다.
내가 생각할 수있는 유일한 점은 압축 된 형식으로 저장하면 bmp가 먼저 작성되고 다음에 인코딩되어 getbuffer() 또는 다른 것을 엉망으로 만듭니다.
하지만 여전히 작동해야한다고 생각합니다.
해당 코드 블록에서의 사용 부족은 필자에게 깊은 걱정입니다. – Xcelled194