我正在捕获我的屏幕并将该图像转换为字节数组并发送到套接字连接。服务器显示数据但不显示图像。
` 公共类 ImageToByteActivity 扩展 Activity {
boolean connected = false;
public ByteArrayOutputStream bos;
public char[] tempChar1 = new char[15];
//public char[] finalValue;
public byte[] buffer;
byte[] b9;
String tempStr,s;
public static final String mCommand1 = "xxxxxxxxxxx";
public static final String mCommand2 = "yyyyyyyyyyyyyyyyyyyyy";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener(){
//@Override
public void onClick(View v) {
// TODO Auto-generated method stub
View view = v.getRootView();;
view.setDrawingCacheEnabled(true);
Bitmap largeIcon = view.getDrawingCache();
bos = new ByteArrayOutputStream();
largeIcon.compress(Bitmap.CompressFormat.JPEG, 100 , bos);
buffer = bos.toByteArray();
try {
s = new String( buffer,"UTF8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Log.w("Image Conversion",bos.toString());
// Log.w("Image Conversion",Arrays.toString(bos.toByteArray()));
Log.w("Image Conversion", String.valueOf(buffer.length));
Log.w("Image Conversion1", s);
stringToBytesASCII();
connection();
}
});
}
public byte[] stringToBytesASCII() {
String pq = String.valueOf(buffer.length);
tempChar1[0] = 'K';
tempChar1[1] = 'U';
tempChar1[2] = 'M';
tempChar1[3] = 'R';
tempChar1[4] = 'H';
tempChar1[5] = 'I';
tempChar1[6] = 'M';
tempChar1[7] = 'A';
tempChar1[8] = 'N';
tempChar1[9] = 'S';
tempChar1[10] = 'H';
tempChar1[11] = 'U';
b9 = new byte[tempChar1.length];
Log.w("abcdefgh",String.valueOf(tempChar1.length));
for (int i = 0; i < b9.length; i++) {
b9[i] = (byte) tempChar1[i];
try {
tempStr = new String( b9,"UTF8");
Log.w("abcd",tempStr);
Log.w("abcd",String.valueOf(tempStr.length()));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return b9;
}
//-------------------------------------------------------------
public void connection(){
try {
InetAddress serverAddr = InetAddress.getByName("ip");
Log.d("ClientActivity", "C: Connecting...");
Socket socket = new Socket(serverAddr, port);
connected = true;
try {
Log.d("ClientActivity", "C: Sending command.");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream())), true);
// where you issue the commands
Log.w("gdfgdf",tempStr);
out.println(mCommand1);
out.flush();
Log.d("ClientActivity", "C: Sent.");
BufferedInputStream inX1 = new BufferedInputStream(socket.getInputStream());
System.out.println("Server says " + inX1.available());
Log.d("ClientActivity", "C: Received.");
while (connected) {
BufferedOutputStream out3 = (BufferedOutputStream) socket.getOutputStream();
//out.write("Hello World\n".getBytes(charSet));
out.write(tempStr);
out.write(s);
out.flush();
Log.d("ClientActivity", "C: Sent Second.");
//Log.d("value",s);
}
} catch (Exception e) {
Log.e("ClientActivity", "S: Error", e);
}
//}
socket.close();
Log.d("ClientActivity", "C: Closed.");
} catch (Exception e) {
Log.e("ClientActivity", "C: Error", e);
connected = false;
}
}
String toBinary( byte[] bytes )
{
StringBuilder sb = new StringBuilder(bytes.length * Byte.SIZE);
for( int i = 0; i < Byte.SIZE * bytes.length; i++ )
sb.append((bytes[i / Byte.SIZE] << i % Byte.SIZE & 0x80) == 0 ? '0' : '1');
return sb.toString();
}
}
`
注意:- 如果我显示 byte[] 它只包含单个值。