画像を切り抜く C#

C# で画像をプログラム的に扱うことによって、開発者はリサイズ、回転、クロップなどのさまざまな操作を実行できます。これらのタスクの中で、クロップは画像から特定の領域を抽出したり、不要な余白を削除したりする際に特に便利です。このガイドでは、.NET 用の Conholdate.Total を使用して C# で画像をクロップする方法に焦点を当てます。

画像をすべての側からトリミングするためのシフト値を使用する技術と、画像の特定の部分を孤立させるためにカスタム矩形を定義する技術の2つを説明します。それぞれのセクションには、十分に文書化されたコードスニペットと実世界のアプリケーションに関する実用的な洞察が含まれています。

Why Crop Images Programmatically in C#?

プログラムで画像をトリミングすることが有益なシナリオがいくつかあります:

  • コンテンツに焦点を当てる: トリミングを使用すると、画像の特定の部分を強調できるため、プロフィール写真、サムネイル、または文書のスキャンに最適です。

  • 自動画像処理: 大量の画像編集やユーザーがアップロードしたコンテンツを含むアプリケーションでは、トリミングプロセスを自動化することでワークフローが効率化され、手動の手間が省かれます。

  • コンプライアンスとプライバシー: クロッピングは、画像を共有する前に、機密または無関係なデータを削除するために使用できます。

クロッピングは単なる美的調整ではなく、データ処理、UXデザイン、システムパフォーマンスの重要な部分です。

JPG PNG BMP 画像をトリミング - .NET API 設定

Conholdate.Total for .NET を以下のNuGetインストールコマンドを使って簡単に設定できます:

Install-Package Conholdate.Total

C#でサイドをシフトして画像をトリミングする

画像の境界を内側に移動させてトリミングする方法を最初の方法で示しています。これは、画像の上部、下部、左側、右側から均一または非対称にマージンを切り取る場合に特に便利です。

// Load the image to be cropped.
using (RasterImage rasterImage = (RasterImage)Image.Load("image.png"))
{
    // Before cropping, the image should be cached for better performance.
    if (!rasterImage.IsCached)
    {
        rasterImage.CacheData();
    }

    // Define shift values for all four sides.
    int leftShift = 10;
    int rightShift = 10;
    int topShift = 50;
    int bottomShift = 50;

    // Based on the shift values, apply the cropping on image. Crop method will shift the image bounds toward the center of image.
    rasterImage.Crop(leftShift, rightShift, topShift, bottomShift);

    // Save cropped image.
    rasterImage.Save("cropped.png");
}

この例では、PNG画像を読み込み、各側から削除するピクセルの数を指定します。Cropメソッドは便利に画像の寸法を内側に調整し、不要な境界を排除しながら画像の完全性を保持します。このメソッドを使用することで、スキャンした文書、画面キャプチャ、画像の境界に理想的な一貫したエッジベースのクロッピングを実現できます。

C# で定義された矩形を使用して画像をトリミングします。

第二の方法は、長方形の境界を使用して保持する正確な領域を定義できるため、より高い精度を提供します。このアプローチは、画像内で望ましい領域の座標とサイズが分かっている場合に最適です。

// Load the image.
using (RasterImage rasterImage = (RasterImage)Image.Load("image.png"))
{
    // Before cropping, the image should be cached for better performance.
    if (!rasterImage.IsCached)
    {
        rasterImage.CacheData();
    }

    // Create an instance of Rectangle class with desired size and crop the image.
    Rectangle rectangle = new Rectangle(20, 20, 20, 20);
    rasterImage.Crop(rectangle);

    // Save cropped image.
    rasterImage.Save("cropped.png");
}

この方法は、特に画像の特定の部分を隔離する必要がある場合に便利です。たとえば、eコマースの写真における製品エリア、スキャンしたドキュメントからのテキストブロック、または図の関心領域などです。このような矩形を定義し適用することは、直感的で非常に効率的です。

無料評価ライセンス

多くの他の機能をAPIのフルキャパシティで評価するための無料の一時ライセンスを取得できます。

結論

C# での画像トリミングは複雑である必要はありません。境界をトリミングしたり、特定の領域を抽出したりする必要がある場合でも、迅速かつ正確に作業を行うことができます。シフトベースおよび長方形ベースのトリミングの両方をサポートしているため、文書画像からコンテンツのパーソナライズに至るまで、幅広い実世界のユースケースに対応する柔軟性があります。

これらの機能を .NET アプリケーションに統合することで、画像編集タスクを自動化し、ユーザーエクスペリエンスを向上させ、大規模なデータセットで一貫したフォーマットを維持できます。

See Also