Объединение изображений GIF с помощью Java
Создавайте собственные приложения Java для объединения изображений GIF с помощью серверных API
Как объединить файлы GIF с помощью Java
Если вы хотите дать волю творчеству, то самое время использовать коллаж изображений. Данная функция позволит объединять фотографии и изображения даже при разноформатности исходных файлов. Отличным способом привлечь внимание к вашему портфолио станет использование фотообоев с повторяющимися изображениями или паттернами. При этом объединение изображений возможно как в горизонтальном, так и в вертикальном направлениях. В том случае, если вам необходимо продемонстрировать результат обработки файла, вы с легкостью можете соединить два изображения: до и после применения фото-эффекта. Чтобы объединить файлы GIF, мы будем использовать Aspose.Imaging для Java API, который представляет собой многофункциональный, мощный и простой в использовании API для обработки и преобразования изображений для платформы Java. Вы можете скачать его последнюю версию прямо с Maven и установите его в своем проекте на основе Maven, добавив следующие конфигурации в файл pom.xml.
Репозиторий
<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>version of aspose-imaging API</version>
<classifier>jdk16</classifier>
</dependency>
Действия по объединению GIF с помощью Java
Вам нужно aspose-imaging-version-jdk16.jar , чтобы попробовать следующий рабочий процесс в вашей собственной среде.
- Загрузить файлы GIF с помощью метода Image.load
- Объединение изображений в новое
- Сохранение обрезанного изображения на диск в поддерживаемом Aspose.Imaging формате
Системные Требования
Aspose.Imaging для Java поддерживается во всех основных операционных системах. Просто убедитесь, что у вас есть следующие предпосылки:
- Установлен JDK 1.6 или выше.
Объединить GIF изображения - Java
import com.aspose.imaging.IMultipageImage; | |
import com.aspose.imaging.Image; | |
import com.aspose.imaging.RasterImage; | |
import com.aspose.imaging.VectorImage; | |
import com.aspose.imaging.fileformats.tiff.TiffFrame; | |
import com.aspose.imaging.fileformats.tiff.TiffImage; | |
import com.aspose.imaging.fileformats.tiff.enums.TiffExpectedFormat; | |
import com.aspose.imaging.imageoptions.PdfOptions; | |
import com.aspose.imaging.imageoptions.TiffOptions; | |
import java.io.File; | |
import java.io.FilenameFilter; | |
import java.util.ArrayList; | |
import java.util.Collections; | |
import java.util.List; | |
// Test directory should have source images to merge | |
String TestDirectory = "D:\\Many2One\\"; | |
// Source file mask, could vary depending on image format (i.e. *.png, *.jpg, *.dicom, *., *.tiff, *.gif etc) | |
final String fileMask = ".png"; | |
List<Image> singles = new ArrayList<Image>(); | |
List<Image> images = new ArrayList<Image>(); | |
try | |
{ | |
int maxWidth = 0; | |
int maxHeight = 0; | |
File[] files = new File(TestDirectory).listFiles(new FilenameFilter() | |
{ | |
@Override | |
public boolean accept(File dir, String name) | |
{ | |
return name.endsWith(fileMask); | |
} | |
}); | |
if (files == null) | |
{ | |
return; | |
} | |
for (File file : files) | |
{ | |
Image image = Image.load(file.getAbsolutePath()); | |
if (image.getWidth() > maxWidth) | |
{ | |
maxWidth = image.getWidth(); | |
} | |
if (image.getHeight() > maxHeight) | |
{ | |
maxHeight = image.getHeight(); | |
} | |
if (image instanceof VectorImage) | |
{ | |
throw new UnsupportedOperationException("Vector images is not supported by these code snippet. Please look at vector to booklet example to get the implementation idea."); | |
} | |
if (image instanceof IMultipageImage) | |
{ | |
Collections.addAll(singles, ((IMultipageImage) image).getPages()); | |
} | |
else | |
{ | |
singles.add(image); | |
} | |
images.add(image); | |
} | |
if (singles.isEmpty()) | |
{ | |
return; | |
} | |
String outputPath1 = TestDirectory + "multiframe.tiff"; | |
String outputPath2 = TestDirectory + "multipage.pdf"; | |
try (TiffImage tiffImage = new TiffImage(new TiffFrame((RasterImage) singles.get(0)))) | |
{ | |
for (int i = 1; i < singles.size(); i++) | |
{ | |
tiffImage.addPage((RasterImage) singles.get(i)); | |
} | |
// Save as muti frame tiff | |
tiffImage.save(outputPath1, new TiffOptions(TiffExpectedFormat.TiffJpegRgb)); | |
// Worry about Pdf ? That's it! | |
tiffImage.save(outputPath2, new PdfOptions()); | |
} | |
} | |
finally | |
{ | |
singles.clear(); | |
for (Image image : images) | |
{ | |
image.close(); | |
} | |
images.clear(); | |
} |
Об Aspose.Imaging for Java API
Aspose.Imaging API — это решение для обработки изображений, позволяющее создавать, изменять, рисовать или конвертировать изображения и фотографии в приложениях. Он предлагает: кросс-платформенную обработку изображений, включая, помимо прочего, преобразования между различными форматами изображений (включая единую многостраничную или многокадровую обработку изображений), модификации, такие как рисование, работа с графическими примитивами, преобразования (изменение размера, обрезка, отражение и поворот), бинаризация, оттенки серого, настройка яркости, контрастности, расширенные функции обработки изображений (фильтрация, дизеринг, маскирование, устранение перекоса) и стратегии оптимизации памяти. Это автономная библиотека, которая не зависит от какого-либо программного обеспечения для операций с изображениями. Можно легко добавить в проекты высокопроизводительные функции преобразования изображений с помощью собственных API. Это 100% частные локальные API, а изображения обрабатываются на ваших серверах.Объединить GIF через онлайн-приложение
Объедините документы GIF, посетив наш веб-сайт Live Demos . Online примеры имеют следующие преимущества
GIF Чем является GIF формат
Формат GIF или Graphical Interchange Format представляет собой тип сильно сжатого изображения. Принадлежащий Unisys, GIF использует алгоритм сжатия LZW, который не ухудшает качество изображения. Для каждого изображения в формате GIF обычно допускается до 8 бит на пиксель, а в изображении допускается до 256 цветов. В отличие от изображения в формате JPEG, которое может отображать до 16 миллионов цветов и довольно далеко выходит за пределы возможностей человеческого глаза. Когда появился Интернет, GIF-файлы оставались лучшим выбором, потому что они требовали низкой пропускной способности и были совместимы с графикой, которая использует сплошные области цвета. Анимированный GIF объединяет многочисленные изображения или кадры в один файл и отображает их в последовательности для создания анимированного клипа или короткого видео. Ограничения по цвету составляют до 256 для каждого кадра и, вероятно, будут наименее подходящими для воспроизведения других изображений и фотографий с цветовым градиентом.
Читать далееДругие поддерживаемые форматы слияния
Используя Java, можно легко объединять разные форматы изображений, в том числе: