我试图将手机中的图片一次一张地发送到我的电脑上,但没有为每张图片打开一个新的Socket,因为我认为这不是一种非常高效的方式。我的问题是,我只收到第一张照片,而不是更多。但是第一张图片也不是“完整的”:它显示前两行像素,其余的与第2行的最后一个像素颜色相同。 我认为问题出在服务器端,因为我可以在手机上显示图像。我也非常喜欢溪流,并感谢我能得到的每一个帮助!
new Thread(new Runnable() {
@Override
public void run() {
try {
ByteArrayOutputStream memoryStream = new ByteArrayOutputStream();
Bitmap bitmapToSend =
Bitmap.createScaledBitmap(bitmapToSend, 900, 800, true);
bitmapToSend.compress(
Bitmap.CompressFormat.JPEG,100, memoryStream);
byte[] byteArray = memoryStream.toByteArray();
memoryStream = null;
DataOutputStream outputStream =
new DataOutputStream(server.getOutputStream());
outputStream.writeInt(byteArray.length);
outputStream.write(byteArray);
outputStream.flush();
} catch (IOException e) {
System.out.println("Socket not created");
e.printStackTrace();
}
}
}).start();
public static void readImages(InputStream stream) throws IOException {
DataInputStream imgInput = new DataInputStream(stream);
int index = 0;
int byteLength;
try {
while ((byteLength = imgInput.readInt())>0) {
byte[] buffer = new byte[byteLength];
imgInput.read(buffer);
OutputStream imgOutput = new FileOutputStream("current" + (index++) + ".jpg");
imgOutput.write(buffer);
imgOutput.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
imgInput.close();
} catch (IOException f) {
f.printStackTrace();
}
}
}