В различных сценариях изображения сжимаются, чтобы уменьшить размер файла. Для этого различные онлайн- или офлайн-приложения позволяют применять сжатие изображений. Однако в некоторых случаях вам может потребоваться реализовать функцию сжатия изображений в веб-приложениях или приложениях для настольных компьютеров. В таких случаях в этой статье рассказывается, как программно сжимать изображения, включая PNG, JPEG и TIFF, с помощью Java.
- API сжатия изображений Java
- Сжатие изображений PNG в Java
- Сжимайте изображения JPEG в Java
- Применение сжатия к изображениям TIFF в Java
- Получите бесплатную лицензию API
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 с помощью класса Image.
- Создайте экземпляр класса JpegOptions.
- Установите уровень сжатия с помощью метода JpegOptions.setCompressionType(JpegCompressionMode).
- Наконец, сохраните сжатое изображение JPEG, используя метод Image.save(String, JpegOptions).
В следующем примере кода показано, как сжимать изображения 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 недавно разработала новое онлайн-приложение, которое позволяет вам преобразовывать набор изображений в видео. Вас также может заинтересовать другой сервис, который можно использовать для сжатия видео путем извлечения звука из видео.