Ich möchte fünf Bilder in meiner App erfassen und schickte ihre Base64-String an den Server ohne zu komprimieren. Ich habe auf Google gesucht und viele Artikel gelesen, nachdem ich die Lösung gefunden habe, Base64-String ohne Komprimierung zu senden. Nun, was ich will, dass, wenn ich nur ein Bild sende, es erfolgreich zu meinem Server speichert, aber wenn ich zwei oder mehr als zwei Bilder sende, dann habe ich unten Fehler, ich bekomme nicht, was das Problem ist. Ich denke etwas, was ich falsch mache.Mehrere Bilder base64 String senden nicht auf Server ohne Komprimierung
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == getActivity().RESULT_OK) {
//user is returning from capturing an image using the camera
if (requestCode == CAMERA_CAPTURE) {
byte[] inputData=null;
//Uri uri = data.getData();
//get the Uri for the captured image
Uri uri = picUri;
Log.d("picUri", uri.toString());
InputStream iStream = null;
try {
iStream = getActivity().getContentResolver().openInputStream(uri);
inputData = getBytes(iStream);
encodedString = Base64.encodeToString(inputData, Base64.DEFAULT);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//carry out the crop operation
performCrop();
} else if (requestCode == PIC_CROP) {
//get the returned data
Bundle extras = data.getExtras();
//get the cropped bitmap
thePic = (Bitmap) extras.get("data");
if (setInImageView.equals("1")) {
imageView1.setImageBitmap(thePic);
image1 =encodedString;
} else if (setInImageView.equals("2")) {
imageView2.setImageBitmap(thePic);
image2 = encodedString;
} else if (setInImageView.equals("3")) {
imageView3.setImageBitmap(thePic);
image3 = encodedString;
} else if (setInImageView.equals("4")) {
imageView4.setImageBitmap(thePic);
image4 = encodedString;
} else if (setInImageView.equals("5")) {
imageView5.setImageBitmap(thePic);
image5 = encodedString;
String str;
str = "1";
}
}
}
}
public void selectImage1() {
try {
//use standard intent to capture an image
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String imageFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/picture.jpg";
File imageFile = new File(imageFilePath);
picUri = Uri.fromFile(imageFile); // convert path to Uri
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, picUri);
startActivityForResult(takePictureIntent, CAMERA_CAPTURE);
} catch (ActivityNotFoundException anfe) {
//display an error message
String errorMessage = "oops! your device doesn't support capturing images!";
Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_SHORT).show();
}
}
//OnClick for set Image in Image View
public void onClick(View v) {
switch (v.getId()) {
case R.id.camera1:
// code
setInImageView="1";
selectImage1();
break;
case R.id.camera2:
// code
setInImageView="2";
selectImage1();
break;
case R.id.camera3:
// code
setInImageView="3";
selectImage1();
break;
case R.id.camera4:
// code
setInImageView="4";
selectImage1();
break;
case R.id.camera5:
// code
setInImageView="5";
selectImage1();
break;
default:
break;
}
}
public static byte[] getBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 10240;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
return byteBuffer.toByteArray();
}
}
Unten ist mein Fehler -
SoapFault - faultcode: 'soap:Server' faultstring: 'There was an exception running the extensions specified in the config file. ---> Maximum request length exceeded.' faultactor: 'null' detail: [email protected]
'schickte ihre base64-Zeichenfolge zum Server ohne Komprimierung '. Welche Art von Komprimierung? Ich verstehe nicht. Sie haben zunächst die Anzahl der Bytes um 30% erweitert, indem Sie in base64 codiert haben. Und jetzt ... Warum sprichst du über Kompression? – greenapps
Danke Greenapps Ich habe deinen Punkt. Ich spreche über, weil ich viele Beispiele sah, aber ich bekomme nur 40kb Bildgröße, die für mich nicht nützlich ist, aber von diesem Code habe ich 1,4mb Größe des Bildes. Warum speichert es nicht alle fünf Bilder auf dem Server? Mache etwas falsch? –
Mein Problem ist, ich möchte alle fünf Bilder speichern, aber es gibt Fehler, die ich in der obigen Frage erwähnt. Aber wenn ich nur ein Image sende, wird es auf dem Server gespeichert. –