Tukar Rentetan Base64 kepada Fail Imej
Menukar rentetan berkod Base64 kepada fail imej boleh menjadi mudah, tetapi ralat mungkin timbul jika tidak dikendalikan dengan betul. Satu ralat sedemikian ialah imej tidak sah.
Masalah:
Apabila cuba menukar rentetan Base64 kepada fail imej menggunakan kod berikut:
function base64_to_jpeg($base64_string, $output_file) { $ifp = fopen( $output_file, "wb" ); fwrite( $ifp, base64_decode( $base64_string) ); fclose( $ifp ); return( $output_file ); } $image = base64_to_jpeg( $my_base64_string, 'tmp.jpg' );
anda mungkin menghadapi ralat menyatakan "tidak sah imej."
Penyelesaian:
Ralat berpunca daripada kemasukan data:image/png;base64 dalam kandungan yang dikodkan. Data tambahan ini mengganggu proses penyahkodan base64 dan mengakibatkan fail imej tidak sah. Untuk menyelesaikan isu ini, alih keluar data berlebihan sebelum menyahkod rentetan:
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); // we could add validation here with ensuring count( $data ) > 1 fwrite($ifp, base64_decode($data[1])); // clean up the file resource fclose($ifp); return $output_file; }
Dengan mengalih keluar data yang tidak diperlukan dan memastikan bahawa hanya rentetan yang dikodkan Base64 sebenar dinyahkod, anda akan berjaya menukar rentetan itu menjadi sah. fail imej.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Imej Tidak Sah' Apabila Menukar Rentetan Base64 kepada JPEG?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!