画像を組み合わせ、 .NET を使用して国境やラベルを追加する方法

画像を組み合わせ、 .NET を使用して国境やラベルを追加する方法

合成画像に限界とキャプションを追加すると、明確性とプロフェッショナリズムが向上します - 技術レポート、ギャラリー、マーケティング材料に不可欠です。

現実世界問題

単純に画像を合併することは、特にギャラリーや側面比較で視覚的な混乱を引き起こす可能性があります. 国境は明確にイメージを分離し、ラベルは文脈、日付、または製品情報を提供します。

ソリューション概要

Aspose.Imaging のグラフィック API は、境界線を描き、背景を満たし、合併中の画像にテキストを上回ることを可能にします - バッチ、スタイル、または自動化の必要性に応じてスケール可能です。

原則

  • Visual Studio 2019 以降
  • .NET 6.0 またはそれ以降(または .Net Framework 4.6.2+)
  • Aspose.Imaging for .NET から NuGet
  • 合併および記録する画像(あらゆるフォーマット)
PM> Install-Package Aspose.Imaging

ステップ・ステップ・実施

ステップ1:合成ランキングを選択し、画像を準備します。

bool mergeHorizontal = true; // or false for vertical
string[] files = Directory.GetFiles("./input", "*.jpg");

ステップ2:画像をアップロードし、制限/ラベル設定を設定します。

var images = files.Select(f => Image.Load(f)).ToList();
int borderThickness = 5;
Color borderColor = Color.Black;
Font labelFont = new Font("Arial", 24, FontStyle.Bold);
Color labelColor = Color.Blue;
string[] labels = files.Select(Path.GetFileNameWithoutExtension).ToArray();

ステップ3:国境とラベルのためのスペースでカンバスのサイズを計算する

int labelHeight = 40;
int totalWidth = mergeHorizontal ? images.Sum(i => i.Width + borderThickness * 2) : images.Max(i => i.Width) + borderThickness * 2;
int totalHeight = mergeHorizontal ? images.Max(i => i.Height) + borderThickness * 2 + labelHeight : images.Sum(i => i.Height + borderThickness * 2 + labelHeight);

ステップ4:各画像を境界とキャプションで描く

using (var outImg = Image.Create(new PngOptions(), totalWidth, totalHeight))
{
    var graphics = new Aspose.Imaging.Graphics(outImg);
    graphics.Clear(Color.White);
    int x = 0, y = 0;
    for (int i = 0; i < images.Count; i++)
    {
        var img = images[i];
        int drawX = mergeHorizontal ? x : (totalWidth - img.Width) / 2;
        int drawY = mergeHorizontal ? (totalHeight - img.Height - labelHeight) / 2 : y;
        // Draw border
        graphics.DrawRectangle(new Pen(borderColor, borderThickness), drawX - borderThickness, drawY - borderThickness, img.Width + borderThickness * 2, img.Height + borderThickness * 2);
        // Draw image
        graphics.DrawImage(img, drawX, drawY, img.Width, img.Height);
        // Draw label
        graphics.DrawString(labels[i], labelFont, new SolidBrush(labelColor), drawX, drawY + img.Height + 5);
        if (mergeHorizontal)
            x += img.Width + borderThickness * 2;
        else
            y += img.Height + borderThickness * 2 + labelHeight;
    }
    outImg.Save("./output/merged_with_borders_labels.png");
}
images.ForEach(img => img.Dispose());

ステップ5:プレビューとFine-Tune

  • 異なる文字、色、または境界厚さをテストする
  • 長いラベルや小さな画像の位置を調整する

ケースとアプリケーションの使用

  • マーケティングとソーシャルメディアは、製品名とのコラッグ
  • テクニカル・ドキュメンタリー・レポート・ファイア・キャプション
  • イベントや展覧会のためのノートされた写真の壁
  • 電子商取引製品比較図

共通の課題と解決策

課題1 : ラベル 画像や国境を超える

ソリューション: 必要に応じてラベルを高めたり、テキストポジションを調整したりします。

チャレンジ2:国境カバー画像コンテンツ

ソリューション: 画像領域外の境界線を描く(サンプルコードに記載されているように)。

チャレンジ3:文字や色の問題

ソリューション: 読みやすさのために、ウェブセキュアな文字と高対比のラベル色を選択します。

パフォーマンス考慮

  • 絵を描いた後にすべての画像を配置して、メモリ漏れを避ける
  • 明確な限界と無損の品質のためにPNGを使用する; JPEG for web
  • テストバッチサイズと大型コラッグのためのカンバサイズ

ベストプラクティス

  • 国境とラベルスタイルをブランド化に一貫させる
  • ターゲットアプリまたはプラットフォームでの出力予測
  • ダイナミックフォルダーや製品リストのための自動化
  • ストレージまたはエクスポートソースの設定を繰り返し実行する

高度なシナリオ

シナリオ1:画像ごとにカスタムの境界線

各写真またはカテゴリに異なる色/厚さを描く。

シナリオ2:回転またはディアゴナルラベル

クリエイティブなスタイルのためのグラフィック変換を使用します。

FAQ

Q:透明か丸い境界線を利用できますか?A:はい、効果のために半透明な色または丸い直角で描く。

Q:どのように複数の言語でロケーション/キャプションを行うのですか?**A: 翻訳 API を使用して生成する labels[] 描く前に。

Q:ラベルコンテンツを自動化できますか?A: はい、ファイルメタデータ、EXIF、またはダイナミックラベル化のためのデータベースから引き出します。

結論

Aspose.Imaging for .NET では、ギャラリーからテクニカルドックまで、あらゆるワークフローで自動化された、視覚的に異なる合併画像を作成するのは簡単です。

See Aspose.Imaging for .NET API リファレンス より多くのカスタマイズのために、国境、ラベル、および絵を描く。

 日本語