Картинка кодируемая в base64 в андройде не декодируется в php base64_decode

Рейтинг: 0Ответов: 2Опубликовано: 10.02.2023

Я кодирую на стороне клbента Bitmap в base64

    public String toBase64FromBitmap(Bitmap bitmap){
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 65, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream .toByteArray();

    String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
    return encoded;
}

Затем данные отправляю на сервер

$request = $_GET;


if (isset($request['base64'])) {
    $fileTmpPath = imagecreatefromstring(base64_decode($request['base64']));
 

и получаю ошибку

Warning: imagecreatefromstring(): gd-jpeg: JPEG library reports unrecoverable error: Unsupported marker type 0xf6 in C:\xampp\htdocs\api\v1\profile\base64upload.php on line 22

Warning: imagecreatefromstring(): Passed data is not in 'JPEG' format in C:\xampp\htdocs\api\v1\profile\base64upload.php on line 22

Warning: imagecreatefromstring(): Couldn't create GD Image Stream out of Data in C:\xampp\htdocs\api\v1\profile\base64upload.php on line 22

Notice: Undefined variable: message in C:\xampp\htdocs\api\v1\profile\base64upload.php on line 66

Ответы

▲ 0Принят

Надо заменить все пробелы на +

str_replace(" ","+",$request['base64']);
▲ 0
 надо заменить флаг Base64.DEFAULT на Base64.URL_SAFE