キャンバスと画像に JS を使って少し試してみました。最後の部分では、最初にサーバーに最終イメージを書き込もうとするページを呼び出します。
このプロセスは、完全ではなく、以前のファイルが存在することを前提としています。
<?php
$filename = explode(".", $_POST["trans_file"]); // name of the image file
if (!unlink("transit/" . $_POST["trans_file"])) echo "File " . $_POST["trans_file"] . "not found!<br />"; // remove the partial file
$filesave = $filename[0] . ".png"; // I will save a PNG file
$filejpg = $filename[0] . ".jpg"; // but I will transform it into JPG
$data = $_POST["base64img_data"]; // here I receive the base64 image by a previous process
$data = explode(";", $data); // I remove the first part of it
$data = explode(",", $data[1]); // $data[1] now contains the base64 image complete
$image=base64_decode(chunk_split($data[1])); // $image is now a PNG file
$handle = fopen("transit/$filesave", "wb"); // Create a PNG file
fwrite($handle, $image); // write it
fclose($handle); // Close, and transform it into JPG
png2jpg("transit/$filesave", "transit/$filejpg", 100);
unlink("transit/$filesave"); // remove PNG image
これをページの先頭に配置しましたが、ブラウザーには常に前のファイルが表示されます。これは、最初にキャンセルされたもので、それ自体が JPG です。
(私にとっては)奇妙なことに、このシーケンスはあるサーバーでは完全に機能していますが、別のサーバーでは機能していません!
ページ内での PHP と JS の非同期実行の場合ではないかと思います。
サーバーとブラウザを同期するにはどうすればよいですか? ありがとうございました。