У меня есть Node Js, который может извлечь строку base64 и сохранить ее в изображение, это мой Node Js Код:
=== NODE JS CODE ===
var q = req.body;
var extention = ".jpg";
var dir = "img/customer/idcard/";
var base64Data = q.image.replace(/^data:image\/\w+;base64,/, "");
fs.unlink("../" + dir + OldGambar + extention, (err) => {
if (err) console.log(err);
// console.log(OldGambar + ' was deleted');
});
require("fs").writeFile("../" + dir + NewGambar + extention, base64Data, 'base64', function(err) {
if (err) console.log(err);
});
Ниже приведен мой код для преобразования изображения в строку Base64 с использованием Android (JAVA):
Bitmap image = ((BitmapDrawable) varimgIDCard.getDrawable()).getBitmap();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Encode = Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);
, а в JAVA все работает правильно, и само изображение можно открыть без каких-либо ошибка
Ниже приведен мой код для преобразования изображения в Base64 с использованием PHP:
$path = $dest.$a;
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$strimg = 'data:image/' . $type . ';base64,' . base64_encode($data);
Приведенный выше код также не имеет проблем или ошибок при создании файла, но при открытии файл. Это приводит к ошибке «Неверная структура JPEG: два маркера SOF»
Почему это происходит? я что-то не так делаю в кодировке PHP?
кстати, вот результат SUCCESS Base64 из Android (JAVA): https://drive.google.com/open?id=1G2XHJxE6QJ0GjQcU5pclP3x7mIxMECzo
кстати, вот результат UNSUCCESSFUL Base64 из PHP: https://drive.google.com/open?id=1PXueFtaws5iT-BlFbpvoGhNzCmT6_8Lp
И да, по какой-то причине base64 из PHP является однострочным, а * Это не 1048 *, что, вероятно, является основной причиной сбоя PHP.
о, и вот скриншот изображения, которое нельзя открыть из base64 PHP: