web-dev-qa-db-ja.com

base64でエンコードされたpngを持っていますが、画像をPHPのファイルに書き込むにはどうすればよいですか?

Base64エンコーディングを使用している場合、PHPで画像ファイル(PNG)を作成する適切な方法は何ですか?

私は遊んでいます:


file_put_contents('/tmp/'. $_REQUEST['id'].'.png', $_REQUEST['data']);

デコードする必要がありますか? Gdライブラリを使用する必要がありますか?

38
mmattax

私の最善の推測は、ファイルに書き込む前に_$_REQUEST['data']_でbase64_decode()を呼び出すだけでよいということです。これで十分でしょう:)。

Base64_decode()を使用する必要があります。そして。時にはそれだけでは不十分です。必要なすべてのコードは次のとおりです。

$img = $_POST['data'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$fileData = base64_decode($img);
//saving
$fileName = 'photo.png';
file_put_contents($fileName, $fileData);

追伸このコードを使用して、HTMLキャンバスからPNG画像を取得しました。

52

[〜#〜] here [〜#〜] のように使用する場合を除いて、 base64_decode() でデコードしたいと思うでしょう。

私が確信しているのは、使用する前に$ _REQUEST ['id']をサニタイズしたいということです。

6