"image url required"]); exit; } $t0 = microtime(true); $ctx = stream_context_create(["http"=>["timeout"=>20]]); $orig = @file_get_contents($url, false, $ctx); if (!$orig) { echo json_encode(["error"=>"source fetch failed"]); exit; } // Ensure cache dir exists and is writable by www-data $cache_dir = "/tmp/u2net_cache"; if (!is_dir($cache_dir)) @mkdir($cache_dir, 0777, true); $tmp_in = tempnam(sys_get_temp_dir(), "bgin_") . ".png"; $tmp_out = tempnam(sys_get_temp_dir(), "bgout_") . ".png"; file_put_contents($tmp_in, $orig); $py = <<&1"); @unlink($py_file); $result = @file_get_contents($tmp_out); @unlink($tmp_in); @unlink($tmp_out); if (!$result || strlen($result) < 500) { echo json_encode(["error"=>"rembg processing failed", "py_out"=>substr($run_out ?? "", 0, 500)]); exit; } $dir = "/var/www/html/generated"; if (!is_dir($dir)) @mkdir($dir, 0755, true); $filename = "wevia-bgremove-" . date("Ymd-His") . "-" . bin2hex(random_bytes(3)) . ".png"; file_put_contents("$dir/$filename", $result); echo json_encode([ "success"=>true, "original"=>$url, "url"=>"https://weval-consulting.com/generated/$filename", "size_kb"=>round(strlen($result)/1024, 1), "elapsed_ms"=>round((microtime(true)-$t0)*1000), "provider"=>"WEVIA BG Remove", ]);