2012-06-30 2 views
3

Android 모바일에서 서버로 비디오/이미지를 보내고 처리 된 비디오/이미지를 수신하고 싶습니다. (예를 들어 이미지를 보내고이 이미지를 이진 이미지 또는 그레이 스케일 또는 크기 조정 등으로 수신) 사람들에게 가장 쉽고 쉬운 방법은 무엇입니까? HTTP? 소켓? XML? 어떻게해야합니까?이미지 및 동영상 파일을 Android에서 서버로 보내고 처리 받음

스트림 (Shared Library not found error on android LogCat)으로 처리하려고했지만 그 방법도 관리 할 수 ​​없었습니다. 질문의 특정 부분에 응답하기 전에

답변

4

먼저 사전에

감사합니다, 여기에 몇 가지 일반적인 조언은 다음과 같습니다

시도는 장치의 사소한 일을 할 수 있습니다. 이미지 위에 마스크를 두거나 회전/크기 조정을하는 것은 매우 간단하며 장치에서 수행 할 수 있습니다. 이렇게하면 사용자는 아무 것도 업로드 할 필요가 없으며 (으로 대기) 서버가 많이로드되지 않습니다.

큰 사진과 그림이 커질 수 있습니다. 이것을 고려하십시오. 생각 나는 아이디어는 사용자가 이미지/비디오를 한 번만 업로드해야하지만 최종 결과를 다운로드하기 전에 여러 조작을 수행 할 수 있어야한다는 것입니다. 그렇지 않으면 긴 대기 시간과 높은 트래픽으로 끝나게됩니다.

사진/비디오를 자신의 서버로 업로드 (아마도 개인)하기 시작하면 얻을 수있는 최대한의 보안을 사용하고 있는지 확인하고 (SSL은 반드시 있어야 함) 사용자에게 콘텐츠를 업로드 할 것이라고 알려줍니다 귀하의 서버에. 또한, 당신은 그들에게 거부 할 수있는 선택권을 주어야합니다. 그렇지 않으면 소송을 당할 수도 있습니다.


지금, 그것의 기술적 인 부분에 :

업에 대한 워크 플로는/서버 /로부터 파일을 다운로드하는 것은 거의 항상 동일합니다 :

  • 열기에 연결하여 Socket
  • 이 파일에 스트림을 취득하여 서버, (귀하의 경우, FileInputStream)는 01,239,426 이진 데이터의
  • 읽기 청크-array
  • , 소켓이 완료
  • 에서 출력 스트림에 읽기 청크 쓰기 스트림과 서버에서 다음 소켓

을 닫습니다, 당신은 그것을 할 다른 방법으로 주위 InputStream로부터 읽어 들여, 내용을 FileOutputStream에 기입합니다.

Socket server = new Socket("192.168.178.32", 1337); 
OutputStream outputStream = server.getOutputStream(); 
FileInputStream in = null; 
try { 
    in = new FileInputStream("/some/path/to/gras.jpeg"); 
    // Write to the stream: 
    byte[] buffer = new byte[1024]; // 1KB buffer size 
    int length = 0; 
    while ((length = in.read(buffer, 0, buffer.length)) != -1){ 
     outputStream.write(buffer, 0, length); 
    } 
    outputStream.flush(); 
} finally { 
    if (in != null) in.close(); 
    socket.close(); // Will close the outputStream, too. 
} 

이 코드는 여기에 던져 질 수있는 예외가 있다는 사실을 일축 :

다음은이 볼 수있는 방법의 작은 예입니다. 적절한 방법으로 처리해야합니다.당신이 고려해야


뭔가 사용자가 (터널을 통과 할 때, 예를 들어) 가로 챌 수있는 모바일 인터넷 연결에서 콘텐츠를 업로드 할 수도있다. 이 경우 재개 가능하도록 업/다운로드를 구현해야합니다.

+0

답장을 보내 주셔서 감사합니다. 귀하의 예를 들어, 클라이언트가 이미지를 보내, 어떻게 처리 된 이미지를받을 수 있습니까? 이미지를 보낸 후 관중을 들으려면 서버를 열어야합니까? – Doon

+0

큰 비디오 파일을 처리하는 데 시간이 걸릴 수 있으므로 처리가 완료되면 푸시 알림을 위해 Cloud2Device 통신을 사용하는 것이 좋습니다. 예를 들어 [Google GCM] (http://developer.android.com/guide/google/gcm/index.html)을 살펴보십시오. –

관련 문제