Base64 文字列を画像ファイルに変換する
Base64 でエンコードされた文字列を画像ファイルに変換するのは簡単ですが、次の場合にはエラーが発生する可能性があります。正しく処理されていません。このようなエラーの 1 つは、無効な画像です。
問題:
次のコードを使用して Base64 文字列を画像ファイルに変換しようとしたとき:
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' );
「無効です」というエラーが発生する場合があります。 image."
解決策:
このエラーは、エンコードされたコンテンツに data:image/png;base64 が含まれていることが原因で発生します。この余分なデータは、base64 デコード プロセスを妨げ、無効な画像ファイルを生成します。この問題を解決するには、文字列をデコードする前に冗長なデータを削除します。
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; }
不要なデータを削除し、実際の Base64 でエンコードされた文字列のみがデコードされるようにすることで、文字列を有効な文字列に正常に変換できます。画像ファイル。
以上がBase64文字列をJPEGに変換する際の「無効な画像」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。