|
소켓에서 받은 JPEG 이미지를 Bitmap으로 전환하여 출력하려고 합니다.
스트림에서 받은 이미지를 파일에 저장시켜 놓고 불러서 그리니까 되구요..
TMemoryStream 을 이용해서 바로 TJPEGImage에 넣어서 TImage로 넣으면
에러(EJPEGImage #41)이 납니다. 이부분에 경험이 있으면 조언을 부탁합니다.
이것 때문에 제명에 못 살 것 같습니다. 제발 도움을....
TMemoryStream *p = new TMemoryStream();
p->WriteBuffer(GetStream(), GetStreamSize()); // 버퍼 스트림에서 가져옮.
Form_Main->Image_Picture->Picture->Bitmap->LoadFromStream(p);
delete p;
=> 이렇게 하면 화면에 아무 변화 없음 (에러 발생하지 않음)
TMemoryStream *p = new TMemoryStream();
TJPEGImage *m_JpegImage = new TJPEGImage();
p->WriteBuffer(ImageProcess->GetStream(), ImageProcess->GetStreamSize());
m_JpegImage->LoadFromStream(p);
Image_Picture->Picture->Bitmap->Assign(m_JpegImage);
delete p;
=> 이렇게 하면 EJPEGImage #41 Exception 발생
TJPEGImage *m_JpegImage = new TJPEGImage();
m_JpegImage->LoadFromFile("kkk.jpg");
Form_Main->Image_Picture->Picture->Bitmap->Assign(m_JpegImage);
=> 정상적으로 작동합니다.
소켓에서 읽은 JPEG 이미지를 파일에 저장했다가 불러오면 정상적으로 보이는 것으로 보아
데이터에는 이상이 없는 것으로 보여집니다. 좌우지간 buffer에 있는 JPEG 이미지를 화면에
뿌려야 하는데... 해결이 되지 않는군요.. 어떻게 해결해야 하는 지요?
답변 주시면 감사...감사..sqlt(감사)...
|