画像の読み込みと解放

2021年8月30日

SDL_imageで画像の読み込みと解放をするには、「IMG_Load関数」と「SDL_FreeSurface関数」を使用します。

IMG_Load関数

画像を読み込んで、サーフェスを作成します。

宣言

SDL_Surface* IMG_Load( const char* file );

引数

file画像ファイルへのパスです。

戻り値

読み込みに成功すると「( 画像の情報から作成した )サーフェスのアドレス」を返し、失敗すると「NULL」を返します。

SDL_FreeSurface関数

サーフェスを破棄します。

宣言

void SDL_FreeSurface( SDL_Surface* surface );

引数

surfaceサーフェスのアドレスです。

サンプルプログラム

#include <SDL_image.h>

int main( int argc, char* argv[] )
{
    auto format_type_flags                  = IMG_INIT_JPG | IMG_INIT_PNG | IMG_INIT_TIF;
    auto bitmask_of_available_format_type   = IMG_Init( format_type_flags );
    auto is_completed                       = ( bitmask_of_available_format_type & format_type_flags ) == format_type_flags;

    if ( !is_completed )
    {
        SDL_Log( u8"SDL_imageの初期化処理に失敗しました。エラーメッセージ: %s", IMG_GetError() );
        return -1;
    }

    auto image = IMG_Load( u8"image.png" );
    
    if ( image == nullptr )
    {
        SDL_Log( u8"画像の読み込みに失敗しました。エラーメッセージ: %s", IMG_GetError() );
        IMG_Quit();
        return -1;
    }
    
    // 画像を使用した処理

    SDL_FreeSurface( image );
    IMG_Quit();

    return 0;
}

参考ページ