В различных сценариях изображения сжимаются, чтобы уменьшить размер файла. Для этого различные онлайн- или офлайн-приложения позволяют применять сжатие изображений. Однако в некоторых случаях вам может потребоваться реализовать функцию сжатия изображений в веб-приложениях или приложениях для настольных компьютеров. В таких случаях в этой статье рассказывается, как программно сжимать изображения, включая PNG, JPEG и TIFF, с помощью Java.

API сжатия изображений Java

Aspose.Imaging for Java — это мощный API, позволяющий выполнять различные операции обработки изображений из приложений Java. Кроме того, он позволяет легко сжимать изображения 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>

Сжатие изображений PNG в Java

Формат PNG поддерживает сжатие без потерь, что означает, что сжатие изображения PNG уменьшит размер файла, но не качество. Для изображений PNG Aspose.Imaging for Java позволяет устанавливать уровни сжатия от 0 до 9, где 0 и 9 — минимальный и максимальный уровни сжатия соответственно. Ниже приведены шаги для сжатия изображения PNG с помощью Java.

  • Сначала загрузите изображение PNG с помощью класса Image.
  • Создайте экземпляр класса PngOptions.
  • Установите уровень сжатия с помощью метода PngOptions.setCompressionLevel(int).
  • Наконец, сохраните сжатое изображение PNG, используя метод Image.save(String, PngOptions).

В следующем примере кода показано, как сжать изображение PNG с помощью Java.

// Загрузить изображение из файла (или потока)
Image image = Image.load("aspose_logo.png");

// Цикл по возможному диапазону уровней сжатия
for (int i = 0; i <= 9; i++) {
	
  // Создайте экземпляр PngOptions для каждого результирующего PNG
	PngOptions options = new PngOptions();
	
  // Установить уровень сжатия
	options.setCompressionLevel(i);
	
  // Сохранить результат на диск (или в поток)
	image.save("CompressingFiles_out" + i + ".png", options);
}

Сжимайте изображения JPEG с помощью Java

Для сжатия изображений JPEG Aspose.Imaging for Java предоставляет следующие типы сжатия.

  • Базовый уровень
  • прогрессивный
  • Без потерь
  • JPEG

Ниже приведены шаги для применения одного из вышеупомянутых типов сжатия к изображениям JPEG с использованием Java.

В следующем примере кода показано, как сжимать изображения JPEG с помощью Java.

// Загрузить изображение
Image original = Image.load("Input.jpeg");
try
{
    JpegOptions jpegOptions = new JpegOptions()
	  {{
        // Применить сжатие
		    setCompressionType(JpegCompressionMode.Progressive);
	  }};
  
  // Сохранить сжатое изображение
  original.save("result.jpg", jpegOptions);
}
finally
{
  original.dispose();
}

Сжимайте изображения TIFF с помощью Java

Aspose.Imaging for Java предоставляет различные типы сжатия TIFF, включая LZW, Packbits, CCIT Fax 3 и 4 и т. д. Таким образом, вы можете выбрать тип сжатия, который лучше всего соответствует вашим требованиям. Ниже приведены шаги для выполнения сжатия TIFF с использованием Java.

  • Сначала загрузите изображение TIFF с помощью класса Image.
  • Создайте экземпляр класса TiffOptions.
  • Установите уровень сжатия, используя метод TiffOptions.setCompression(TiffCompressions).
  • Установите другие параметры, такие как биты на образец, фотометрические, палитра и т. д.
  • Наконец, сохраните сжатое изображение TIFF, используя метод Image.save(String, TiffOptions).

В следующем примере кода показано, как сжимать изображения TIFF с помощью Java.

// Загрузите изображение через путь к файлу или поток
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 без оценочных ограничений, вы можете получить бесплатную временную лицензию.

Вывод

Сжатие изображений часто требуется для уменьшения размера изображений. Поэтому в этой статье рассказывается, как программно сжимать изображения PNG, JPEG и TIFF с помощью Java. Кроме того, вы можете узнать больше об API обработки изображений Java, используя документацию.

Смотрите также

Информация: Aspose недавно разработала новое онлайн-приложение, которое позволяет вам преобразовывать набор изображений в видео. Вас также может заинтересовать другой сервис, который можно использовать для сжатия видео путем извлечения звука из видео.