ホームページ >バックエンド開発 >PHPチュートリアル >Base64文字列をJPEGに変換する際の「無効な画像」エラーを修正する方法?

Base64文字列をJPEGに変換する際の「無効な画像」エラーを修正する方法?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-14 06:14:11238ブラウズ

How to Fix

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。