C#を使用してPNGファイルのサイズを縮小する

C#を使用してPNGファイルのサイズを縮小する

システムストレージは、この現代のテクノロジーにおける重要なテーマです。データの量は日々増加しており、データファイルの視覚的表現は非常に人気があります。ただし、画像ファイル形式を圧縮する方法はたくさんありますが、画質を損なうことはありません。したがって、この.NET画像圧縮APIを使用してPNG画像を圧縮します。このブログ投稿では、プログラムでC#を使用してPNGファイルサイズを縮小する方法を学習します。

この記事では、次の点について説明します。

画像圧縮APIのインストール

このライブラリは、JPEGTIFFなどのさまざまな画像ファイル形式を操作および処理するためのさまざまなメソッドとプロパティを提供します。このAPIを.NETプロジェクトにインストールする方法は2つあります。

したがって、DLLファイルをダウンロードするか、NuGetパッケージマネージャーで次のコマンドを実行できます。

Install-Package Aspose.Imaging

C#を使用してPNGファイルサイズを縮小する方法

画像ファイル形式を圧縮するためのメソッドとプロパティの膨大なスタックここを見ることができます。したがって、プログラムでPNGファイルを圧縮するための手順とコードスニペットを記述します。

次の手順に従います。

  1. Loadメソッドを呼び出して、ソースPNG画像をロードします。
  2. Saveメソッドを呼び出して、圧縮画像をPNG形式で保存します。
  3. このPngOptionsがプログレッシブであるかどうかを示すProgressiveプロパティの値を設定します。
  4. IndexedColorは、各ピクセルがパレットインデックスであるカラータイプを表します。
  5. CompressionLevelの値を割り当てて、最大圧縮を設定します。
  6. GetCloseImagePaletteメソッドは、画像にカラーパレットがない場合に、ラスター画像からカラーパレットを取得します(画像をパレット化します)。パレットが存在する場合は、計算を実行する代わりにパレットが使用されます。
// Loadメソッドを呼び出してソースPNG画像をロードします 
        using (Image image = Image.Load("image.png"))
        {
        // Saveメソッドを呼び出して、圧縮された画像をPNG形式で保存します  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // このPngOptionsがプログレッシブであるかどうかを示すProgressiveプロパティの値を設定します。
                Progressive = true,
            // IndexedColorは、各ピクセルがパレットインデックスであるカラータイプを表します 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // 最大圧縮率を設定するには、CompressionLevelの値を割り当てます 
                CompressionLevel = 9,
            // GetCloseImagePaletteメソッドは、画像にカラーパレットがない場合に、ラスター画像からカラーパレットを取得します(画像をパレット化します)。パレットが存在する場合は、代わりに計算を実行するために使用されます。 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

画像圧縮API-高度なオプション

前のセクションでは、C#を使用してPNGファイルのサイズを縮小する方法を学びました。それでは、この画像圧縮APIの他のいくつかの優れたメソッドとプロパティを調べてみましょう。このセクションでは、プログラムでPNGファイルを作成するためのカスタムAPI呼び出しを行います。

以下の手順とコードスニペットに従うことができます。

  1. 100x100ピクセルのPNG画像を作成するPngImageクラスのインスタンスを初期化します。
  2. LinearGradientBrushメソッドは、線形勾配でブラシをカプセル化します。
  3. 指定された座標でPoint構造の新しいインスタンスを初期化します。
  4. 現在のアセンブリで使用されているグラフィックエンジンに従って、グラフィックを表すGraphicsクラスのインスタンスをインスタンス化します。
  5. FillRectangleメソッドを使用して、画像を青透明のグラデーションで塗りつぶします。
  6. PngOptionsクラスのオブジェクトを作成します。
  7. このPngOptionsがプログレッシブであるかどうかを示すProgressiveプロパティの値を設定します。
  8. ResolutionSettingクラスを初期化することにより、水平および垂直の解像度を1インチあたり96ピクセルに設定できます。
  9. ColorTypeプロパティに値を割り当てて、色のタイプを設定します。
  10. CompressionLevelプロパティに値を割り当てて、圧縮の最大レベルを設定します。
  11. FilterTypeプロパティは、PNGファイルの保存プロセス中に使用されるフィルタータイプを設定します。
  12. BitDepthプロパティに値を割り当てて、チャネルあたりのビット数を設定します。
  13. Saveメソッドを呼び出して、ファイルに保存します。

    // 100x100ピクセルのPNG画像を作成するPngImageクラスのインスタンスを初期化します。 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // LinearGradientBrushメソッドは、線形勾配でブラシをカプセル化します 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // 指定された座標でPoint構造の新しいインスタンスを初期化します。 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // 現在のアセンブリで使用されているグラフィックエンジンに従ってグラフィックを表すGraphicsクラスのインスタンスをインスタンス化します。
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // FillRectangleメソッドを使用して、画像を青く透明なグラデーションで塗りつぶします。 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // PngOptionsクラスのオブジェクトを作成します 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // このPngOptionsがプログレッシブであるかどうかを示すProgressiveプロパティの値を設定します。 
        saveOptions.Progressive = true;

        // ResolutionSettingクラスを初期化して、水平および垂直の解像度を1インチあたり96ピクセルに設定します。 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // ColorTypeプロパティに値を割り当てて、色のタイプを設定します。
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // 圧縮の最大レベルを設定するには、CompressionLevelプロパティに値を割り当てます。 
        saveOptions.CompressionLevel = 9;

        // FilterTypeプロパティは、pngファイルの保存プロセス中に使用されるフィルタータイプを設定します。
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // BitDepthプロパティに値を割り当てて、チャネルあたりのビット数を設定します。
        saveOptions.BitDepth = 8;

        // Saveメソッドを呼び出してファイルに保存します。 
        pngImage.Save( "output.png", saveOptions);
    }

以下の画像で出力を確認できます。

画像圧縮API

無料ライセンスを取得する

無料の一時ライセンスを取得して、評価の制限なしでAPIを試すことができます。

まとめ

このブログ投稿はここで終了できます。プログラムでC#を使用してPNGファイルのサイズを縮小する方法を学んだことを願っています。さらに、最適化されたPNGファイルを作成した、この画像圧縮APIの他の高度な方法をいくつか実行しました。ただし、PNGファイル形式に関するその他のメソッドとプロパティについては、このリンクにアクセスしてください。何よりも、エコシステムを知るために、この.NETライブラリのドキュメントをスキップしないでください。他の有用なトピックについては、今後のブログ投稿で書きます。したがって、最新情報についてはconholdate.comと連絡を取り合ってください。

質問する

私たちのフォーラムであなたの質問や質問について私たちに知らせることができます。

よくある質問

PNG画像をC#で圧縮する方法は?

この.NET画像圧縮APIをインストールして、PNGファイル形式を圧縮および操作します。 JPEGTIFFなどの他の一般的な画像ファイル形式を圧縮するためのメソッドとプロパティを提供します。

PNG形式の画像ファイルサイズを最小化するにはどうすればよいですか?

このメソッドを使用すると、プログラムでC#を使用してPNGファイルのサイズを小さくすることができます。さらに、要件に応じてAPI呼び出しを構成できます。

C#コード例でPNG画像のサイズを変更するにはどうすればよいですか?

このリンクをたどって、プログラムでPNG画像のサイズを変更するコードスニペットについて理解してください。この.NETAPIは強力で、さまざまなメソッドとプロパティを提供します。

関連項目