web-dev-qa-db-ja.com

base64でエンコードされたjpegからGdイメージを作成するにはどうすればよいですか?

応答オブジェクトとして(Jsonオブジェクト内の他のものと一緒に)base64でエンコードされたjpeg画像を配信するアップロードAPIがあります。

エンコードされた画像を次のように作成します。

$im; // Gd image resource
ob_start();
imagejpeg($im);
$data = base64_encode(ob_get_clean());

次に、データはjavascriptを使用してフォームフィールド内に配置され、送信されます。

その画像を実際にファイルとして保存できるように、そこからGdリソースを再度作成するにはどうすればよいですか?

PHPのすべて。

14
The Surrican

imagecreatefromstring() 関数を使用できます:

$data = base64_decode($_POST['image_as_base64']);

$formImage = imagecreatefromstring($data);

「文字列」は「実際の」文字列を意味するものではありません。その場合、それはバイト/ブロブデータを意味します。

31
user432219

その画像を実際にファイルとして保存できるように、そこからGdリソースを再度作成するにはどうすればよいですか?

その余分なステップを実行する必要がありますか?どうですか:

file_put_contents('MyFile.jpg', base64_decode($_POST['MyFormField']));
14
Vilx-

私はこの方法で行いました:

// input is in format: data:image/png;base64,...
$str="data:image/png;base64,"; 
$data=str_replace($str,"",$_POST['image']); 
$data = base64_decode($data);
file_put_contents('tmp/'.mktime().'.png', $data);
0