さまざまなシナリオで、画像はファイルサイズを縮小するために圧縮されます。このために、さまざまなオンラインまたはオフラインのアプリケーションを使用して、画像圧縮を適用できます。ただし、場合によっては、Webまたはデスクトップアプリケーション内から画像圧縮機能を実装する必要があります。このような場合、この記事では、Javaを使用してPNGJPEGTIFFなどの画像をプログラムで圧縮する方法について説明します。

Java画像圧縮API

Aspose.Imaging for Javaは、Javaアプリケーション内からさまざまな画像処理操作を実行できる強力なAPIです。さらに、PNG、JPEG、TIFF画像をシームレスに圧縮できます。 APIを使用するには、JARをダウンロードするか、Mavenベースのアプリケーションにインストールします。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-imaging</artifactId>
    <version>20.12</version>
    <classifier>jdk16</classifier>
</dependency>

JavaでPNG画像を圧縮する

PNG形式はロスレス圧縮をサポートしています。つまり、PNG画像を圧縮すると、ファイルサイズは小さくなりますが、品質は低下しません。 PNG画像の場合、Aspose.Imaging for Javaでは、圧縮レベルを0から9に設定できます。ここで、0と9はそれぞれ最小圧縮レベルと最大圧縮レベルです。 Javaを使用してPNG画像を圧縮する手順は次のとおりです。

次のコードサンプルは、Javaを使用してPNG画像を圧縮する方法を示しています。

// ファイル(またはストリーム)から画像をロードする
Image image = Image.load("aspose_logo.png");

// 可能な圧縮レベル範囲でループする
for (int i = 0; i <= 9; i++) {
	
  // 結果のPNGごとにPngOptionsのインスタンスを作成します
	PngOptions options = new PngOptions();
	
  // 圧縮レベルを設定する
	options.setCompressionLevel(i);
	
  // 結果をディスク(またはストリーム)に保存
	image.save("CompressingFiles_out" + i + ".png", options);
}

Javaを使用してJPEG画像を圧縮する

JPEG画像圧縮の場合、Aspose.ImagingforJavaは次の圧縮タイプを提供します。

  • ベースライン
  • プログレッシブ
  • 無損失の
  • JpegLs

以下は、Javaを使用して上記の圧縮タイプの1つをJPEG画像に適用する手順です。

次のコードサンプルは、Javaを使用してJPEG画像を圧縮する方法を示しています。

// 画像を読み込む
Image original = Image.load("Input.jpeg");
try
{
    JpegOptions jpegOptions = new JpegOptions()
	  {{
        // 圧縮を適用する
		    setCompressionType(JpegCompressionMode.Progressive);
	  }};
  
  // 圧縮画像を保存する
  original.save("result.jpg", jpegOptions);
}
finally
{
  original.dispose();
}

Javaを使用してTIFF画像を圧縮する

Aspose.Imaging for Javaは、LZW、Packbits、CCIT Fax 3&4などを含むさまざまなTIFF圧縮タイプを提供します。したがって、要件に最適な圧縮タイプを選択できます。以下は、Javaを使用してTIFF圧縮を実行する手順です。

  • まず、Imageクラスを使用してTIFF画像をロードします。
  • TiffOptionsクラスのインスタンスを作成します。
  • TiffOptions.setCompression(TiffCompressions)メソッドを使用して圧縮レベルを設定します。
  • サンプルあたりのビット数、測光、パレットなどの他のオプションを設定します。
  • 最後に、Image.save(String, TiffOptions)メソッドを使用して圧縮されたTIFF画像を保存します。

次のコードサンプルは、Javaを使用してTIFF画像を圧縮する方法を示しています。

// ファイルパスの場所またはストリームを介して画像をロードする
try (Image image = Image.load("sample.tiff"))
{
	// 結果の画像のTiffOptionsのインスタンスを作成します
	TiffOptions outputSettings = new TiffOptions(TiffExpectedFormat.Default);

	// BitsPerSample、圧縮、測光モード、およびグレイケールパレットを設定します
	outputSettings.setBitsPerSample(new int[] { 4 });
	outputSettings.setCompression(TiffCompressions.Lzw);
	outputSettings.setPhotometric(TiffPhotometrics.Palette);
	outputSettings.setPalette(ColorPaletteHelper.create4BitGrayscale(false));
	image.save("SampleTiff_out.tiff", outputSettings);
}

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

評価の制限なしにAPIを試してみたい場合は、無料の一時ライセンスを取得できます。

結論

多くの場合、画像のサイズを小さくするために画像の圧縮が必要になります。したがって、この記事では、Javaを使用してプログラムでPNG、JPEG、およびTIFF画像を圧縮する方法について説明しました。さらに、ドキュメントを使用して、Java画像処理APIの詳細を調べることができます。

関連項目

情報:Asposeは最近、一連の画像を動画に変換できる新しいオンラインウェブアプリを開発しました。 ビデオから音を抽出することによってビデオを圧縮するために使用できる別のサービスに興味があるかもしれません。