1. ホーム
  2. php

[解決済み] Base64文字列を画像ファイルに変換する?重複

2022-04-25 06:21:24

質問

base64の画像文字列を画像ファイルに変換しようとしています。これが私のBase64文字列です。

http://pastebin.com/ENkTrGNG

以下のコードで、画像ファイルに変換します。

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' );

というエラーが発生します。 invalid 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; 
}