Menukar Rentetan Base64 kepada Fail Imej dalam PHP
Isu timbul apabila menukar rentetan imej base64 kepada fail imej. Rentetan base64 selalunya mengandungi metadata tambahan seperti "data:image/png;base64," yang mengganggu penyahkodan yang betul.
Memahami Masalah
Penyahkodan base64 lalai fungsi mengharapkan data imej tulen, tetapi metadata tambahan yang terdapat dalam rentetan base64 merosakkan proses penyahkodan. Ini mengakibatkan imej tidak sah apabila cuba dipaparkan atau disimpan.
Penyelesaian: Mengalih Keluar Metadata Sebelum Menyahkod
Untuk menyelesaikan isu ini, ubah suai fungsi penukaran untuk memisahkan rentetan pada koma dan ekstrak data imej sebenar. Fungsi yang diubah suai di bawah dengan cekap mengendalikan situasi ini:
function base64_to_jpeg($base64_string, $output_file) { // Open the output file for writing $ifp = fopen($output_file, 'wb'); // Split the string on commas // $data[0] == "data:image/png;base64" // $data[1] == <actual base64 string> $data = explode(',', $base64_string); // Validate that the string is in the correct format if (count($data) < 2) { throw new InvalidArgumentException("Invalid base64 string"); } // Extract and decode the actual image data fwrite($ifp, base64_decode($data[1])); // Clean up the file resource fclose($ifp); return $output_file; }
Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan Imej Base64 ke Fail JPEG dengan betul dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!