안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
제가 요즘 안드로이드 - C#간 소켓통신을 하고 있는데요
문자열은 잘 주고받아 지는데
이미지전송이 잘 안되서요ㅠ
안드로이드에서 Drawable을 비트맵으로 변환했다가 다시 byte[]로 변환하여 보내고
C#에서 받은 byte[]을 비트맵으로 변환했다가 다시 Image객체로 변환하는 방법을 시도해보고 있는데
잘 안되요ㅠㅠ
C#에서 보내고 안드로이드에서 받는것도 안되구요ㅠ
byte[]을 보내거나 받으려면 어떻게 해야 하나요?
아니면 이미지를 전송하는 다른 방법이 있을까요?
도와주세요ㅠ
공지사항을 다 읽었습니다.
2011.01.24 07:37:36
비트맵 안에 널문자나 특수문자에 해당하는 핵사코드가 내장되어 있으므로 바로 전송해서는 문제가 있구요. 바이러리를 아스키로 인코딩하고 다시 받은 데이터를 아스키에서 바이러리로 디코딩해야 하는 것으로 알고 있습니다. 읿만적인 통신환경에서도 많이 사용하는 방식입니다.
2011.01.24 09:29:00
통신할때 byte align이 동일한지 확인해 보세요.
리눅스는 기본이 4byte align이고, 윈도는 8byte align입니다.
c#으로는 안해봤고, 예전에 c++하고 리눅스 통신할때 이것 때문에 data 깨지더군요.
c/c++에서는 #pragma pack 으로 뒤지면 나올겁니다.
아니면, bitmap이 RGB24인지, RGB32인지도 확인해보세요.
java가 int형 4byte로 처리해서 RGB24인 경우, dummy 1 byte가 pixel당 붙을 수 있습니다.
windows c/c++ <---> linux c에서는 아스키로 변환 안하고,
binary로 image나 동영상 통신 잘됩니다. ㅡㅡ;
리눅스는 기본이 4byte align이고, 윈도는 8byte align입니다.
c#으로는 안해봤고, 예전에 c++하고 리눅스 통신할때 이것 때문에 data 깨지더군요.
c/c++에서는 #pragma pack 으로 뒤지면 나올겁니다.
아니면, bitmap이 RGB24인지, RGB32인지도 확인해보세요.
java가 int형 4byte로 처리해서 RGB24인 경우, dummy 1 byte가 pixel당 붙을 수 있습니다.
windows c/c++ <---> linux c에서는 아스키로 변환 안하고,
binary로 image나 동영상 통신 잘됩니다. ㅡㅡ;



