我正在开发一款将照片发送到服务器并从Android进行保存的应用。图像以base64编码。当它被解码时,它显示全黑。
任何人都知道发生了什么?这是我使用的PHP代码。
$newFileName = uniqid();
$newFileName = $newFileName.$fileType;
$file = file_put_contents($path.'../../uploads/'.$user.'/'.$newFileName.'', base64_decode($file));
答案 0 :(得分:0)
我猜你是从画布上传数据? 您需要先更正PNG数据并将其另存为PNG文件
$img_data = str_replace('data:image/png;base64,', '', $img_data);
$img_data = str_replace(' ', '+', $img_data);
$decoded_image = base64_decode($img_data);
$PNGfile = $_SERVER['DOCUMENT_ROOT']."/".$upload_path."/temp.png";
file_put_contents( $PNGfile ,$decoded_image);
png2jpg($PNGfile, $large_image_location, 80);
如果要将其转换为JPEG,此功能可以完成工作,然后删除PNG:
function png2jpg($originalFile, $outputFile, $quality) {
$image = imagecreatefrompng($originalFile);
imagejpeg($image, $outputFile, $quality);
// imagedestroy($image);
}
提示:如果您要上传画布数据,请将数据放入< TEXTAREA>在发布之前 - 我使用了< INPUT>它截断了图像数据,直到我改为< TEXTAREA>。