Android MonkeyImage를 사용하여 Emulator의 화면 캡처를 구현하려고합니다. 캡쳐 된 데이터는 TCPSocket을 통해 Ruby 스크립트로 보내지고 jpg 이미지로 저장됩니다. 그러나 보낸 문자열 데이터를 이진수로 변환하는 방법을 모르겠다. 코드는 다음과 같습니다.Android MonkeyImage to binary
[client.py]
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
import socket
import sys
import base64
server_address = ('localhost', 9898)
print >>sys.stderr, 'connecting to %s port %s' % server_address
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(server_address)
device = MonkeyRunner.waitForConnection(60 , "emulator-5554")
while True:
sc = device.takeSnapshot().convertToBytes("jpg")
size = str(len(sc)).zfill(16)
sock.sendall(size)
sock.sendall(sc)
print >>sys.stderr, 'sended'
sock.close()
[server.rb]
#!/usr/bin/ruby
# coding: utf-8
require "socket"
s0 = TCPServer.open(9898)
sock = s0.accept
count = 0
loop do
size = sock.recv(16).to_i
image = sock.recv(size)
File.open("/Users/taicsuzu/Downloads/ss4/test"+count.to_s+".jpg", "wb") do |file|
#file.write(image.unpack("B*"))[0]
#file.write(image)
#file.write(image.encode("BINARY"))
end
p image
count += 1
end
sock.close
s0.close
결과는 다음과 같다.
"\xFF\xD8\xFF\xDB\x00C\x00\ ...
어떻게 이미지 바이너리로 ASCII 문자열 데이터를 변환 할 수 있습니까? 잘못된 이미지 또는 검은 색 이미지를 생성하는 주석 처리 된 행 (file.write() ...)이 작동하지 않습니다. 감사합니다.