ホームページ > バックエンド開発 > C++ > ファイル全体をロードせずに画像のサイズを効率的に取得するにはどうすればよいですか?

ファイル全体をロードせずに画像のサイズを効率的に取得するにはどうすればよいですか?

DDD
リリース: 2025-01-10 12:06:44
オリジナル
725 人が閲覧しました

How Can I Efficiently Retrieve Image Dimensions Without Loading the Entire File?

画像サイズを効率的に取得する

多くの画像処理タスクでは、画像サイズを決定することが重要です。ただし、画像ファイル全体をロードする従来の方法は、サイズ情報のみが必要な場合には非効率的です。

幸いなことに、ファイル全体をロードせずに画像の寸法を取得する別の方法があります。そのような手法の 1 つは、画像ヘッダー情報を分析することです。このヘッダー情報には、多くの場合、寸法などの情報が含まれています。

この方法を実装するには、複数の画像形式をサポートする十分にテストされた画像処理ライブラリを使用することをお勧めします。ライブラリを使用できない場合は、画像ヘッダーを解析するカスタム コードを作成できます。

これは、いくつかの一般的な画像形式を処理するサンプル コード スニペットです:

<code>// ... (代码已省略) ...

public static Size GetDimensions(string path)
{
    using (BinaryReader br = new BinaryReader(File.OpenRead(path)))
    {
        try
        {
            return GetDimensions(br);
        }
        catch (ArgumentException e)
        {
            if (e.Message.StartsWith("无法识别图像格式。"))
            {
                throw new ArgumentException("无法识别图像格式。", "path", e);
            }
            else
            {
                throw e;
            }
        }
    }
}

// ... (代码已省略) ...

private static Size DecodeBitmap(BinaryReader br)
{
    br.ReadBytes(16);
    int width = br.ReadInt32();
    int height = br.ReadInt32();
    return new Size(width, height);
}

// ... (其他格式解码器已省略) ...</code>
ログイン後にコピー

この手法は、特に大きな画像ファイルや複数の画像を扱う場合に、画像の寸法を取得するより効率的な方法を提供します。

以上がファイル全体をロードせずに画像のサイズを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート