Мое приложение для Android отправляет растровое изображение (снятое временно) на удаленный сервер в виде строки в кодировке base64.Код для этого ниже.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
takenImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
Теперь я расшифровываю изображение, используя следующий код
function base64_to_jpeg($base64_string, $output_file) {
// open the output file for writing
$ifp = fopen( $output_file, 'wb' );
#spliting the string on commas
#$data[ 0 ] == "data:image/png;base64"
#$data[ 1 ] == <actual base64 string>
$data = explode( ',', $base64_string );
// we could add validation here with ensuring count( $data ) > 1
fwrite( $ifp, base64_decode( $data[ 1 ] )); #
// clean up the file resource
fclose( $ifp );
return $output_file;
}
Теперь я получаю ошибку как
Undefined offset : 1 at base64_decode($data[1])
Это означает, что после данных нет строки: image / png; base64.Но я проверил, что строка есть прямо перед запросом поста.Если я приму во внимание всю полученную строку, то получу изображение в виде зеленого оттенка, которое является постоянным независимо от полученного изображения.
Я что-то упустил?