我需要逐个上传图片到服务器, 当图像上传到服务器时,服务器执行“图像处理”, 当图像处理完成后服务器返回答案。 客户端(android)从服务器获得答案,它需要立即启动另一张图片。 所以。 所以。 所有这些应该是最高速度
目前: 我的上传速度平均为230kB / s。
服务器上的图像大小为362KB
禁用服务器中的图像处理。
安卓代码:
ByteArrayOutputStream bos_output = new ByteArrayOutputStream();
boolean isCompress = bmp.compress(CompressFormat.JPEG , 60, bos_output);
byte[] bos = bos_output.toByteArray();
// call the method in Thread
String response = myPost(SERVER_URL, "file_name", bos);
// the uploading method
public String myPost(String serverPath, String fileNameonserver, byte[] baos)
{
String fileName = fileNameonserver+".jpg";
HttpURLConnection conn = null;
DataOutputStream dos = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
try {
URL url = new URL(serverPath);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Cache-Control", "no-cache");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" + fileName + "\"" + lineEnd);
dos.writeBytes(lineEnd);
dos.write(baos);
dos.flush();
dos.close();
String response= "";
//start listening to the stream
Scanner inStream = new Scanner(conn.getInputStream());
//process the stream and store it in StringBuilder
while(inStream.hasNextLine())
response+=(inStream.nextLine());
return response;
}
catch (Exception e)
{
e.printStackTrace();
return "";
}
}
php代码:
<?php
$file_path = "images/";
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path))
{
//$data = $_FILES['uploaded_file']['name'];
//exec("ALGO.exe {$data}",$output);
//foreach($output as $line)
//{
// echo $line;
//}
//echo "";
echo "success";
//unlink($file_path);
} else{
echo "fail";
}
?>
此代码正常运行,我可以以2秒的平均值上传图片。
这还不够好,这对照片或缩放来说是个问题。
1 - 我有一个想法只传递更改,但我没有时间去做这么复杂的图书馆建议吗?
2 - 或者我可以使用 RTSP 吗?
3 - 这里有任何强力压缩吗? (代码片段非常好)
感谢。
答案 0 :(得分:0)
你真的需要全尺寸的图片吗?
即使压缩到jpg / 60,如果你的图像是直接从相机出来的3000x2500px,这是一个巨大的图像。你打算用那个大图像做什么吗?
如果不是,你可以将图像缩小到更合理的尺寸,例如1200x900px,这将大大减小一旦压缩为jpeg / 60的尺寸。