Обработка данных XMP в изображениях с помощью Aspose.Imaging для Java

Aspose.Imaging for Java — универсальная и мощная библиотека для работы с изображениями различных форматов. Из этого руководства вы узнаете, как обрабатывать данные XMP (расширяемая платформа метаданных) в изображениях с помощью Aspose.Imaging for Java. XMP — это стандарт для встраивания метаданных в файлы изображений, позволяющий хранить ценную информацию, такую как автор, описание и многое другое.

Предварительные условия

Прежде чем начать, убедитесь, что у вас есть следующие предварительные условия:

  • На вашем компьютере установлена среда разработки Java.
  • Установлена библиотека Aspose.Imaging for Java. Вы можете скачать его с сайтаВеб-сайт Aspose.Imaging for Java.
  • Базовое понимание программирования на Java.

Импорт пакетов

Начните с импорта необходимых пакетов в ваш Java-проект. Вы можете добавить следующие операторы импорта в начало вашего кода:

import com.aspose.imaging.Image;
import com.aspose.imaging.Rectangle;
import com.aspose.imaging.imageoptions.TiffOptions;
import com.aspose.imaging.xmp.XmpPackage;
import com.aspose.imaging.xmp.XmpPacketWrapper;
import com.aspose.imaging.xmp.XmpMeta;
import com.aspose.imaging.xmp.photoshop.ColorMode;
import com.aspose.imaging.xmp.photoshop.PhotoshopPackage;
import com.aspose.imaging.xmp.dc.DublinCorePackage;
import com.aspose.imaging.xmp.header.XmpHeaderPi;
import com.aspose.imaging.xmp.trailer.XmpTrailerPi;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

Теперь давайте разобьем пример на пошаговое руководство:

Шаг 1. Укажите размер изображения и параметры Tiff.

Сначала определите каталог, в котором будет храниться ваше изображение, и создайте прямоугольник, чтобы указать размер изображения. В этом примере мы используем изображение Tiff с определенными параметрами.

String dataDir = "Your Document Directory" + "ConvertingImages/";
Rectangle rect = new Rectangle(0, 0, 100, 200);
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.TiffJpegRgb);
tiffOptions.setPhotometric(TiffPhotometrics.MinIsBlack);
tiffOptions.setBitsPerSample(new int[] { 8 });

Шаг 2. Создайте новое изображение

Теперь создайте новое изображение с указанными параметрами. Это изображение будет использоваться для хранения метаданных XMP.

try (TiffImage image = new TiffImage(new TiffFrame(tiffOptions, rect.getWidth(), rect.getHeight()))) {

Шаг 3. Создайте заголовок и трейлер XMP

Создайте экземпляры XMP-Header и XMP-Trailer для ваших метаданных XMP. Эти заголовки и трейлеры помогают определить структуру метаданных.

    XmpHeaderPi xmpHeader = new XmpHeaderPi();
    xmpHeader.setGuid(dataDir);
    
    XmpTrailerPi xmpTrailer = new XmpTrailerPi(true);

Шаг 4. Создайте метаинформацию XMP

Теперь создайте экземпляр мета XMP для установки различных атрибутов. Вы можете добавить такую информацию, как автор и описание.

    XmpMeta xmpMeta = new XmpMeta();
    xmpMeta.addAttribute("Author", "Mr Smith");
    xmpMeta.addAttribute("Description", "The fake metadata value");

Шаг 5. Создайте оболочку пакета XMP

Создайте экземпляр XmpPacketWrapper, содержащий заголовок XMP, трейлер и метаинформацию.

    XmpPacketWrapper xmpData = new XmpPacketWrapper(xmpHeader, xmpTrailer, xmpMeta);

Шаг 6. Добавьте пакет Photoshop

Чтобы сохранить информацию, специфичную для Photoshop, создайте пакет Photoshop и установите его атрибуты, такие как город, страна и цветовой режим. Затем добавьте этот пакет в метаданные XMP.

    PhotoshopPackage photoshopPackage = new PhotoshopPackage();
    photoshopPackage.setCity("London");
    photoshopPackage.setCountry("England");
    photoshopPackage.setColorMode(ColorMode.Rgb);
    xmpData.addPackage(photoshopPackage);

Шаг 7. Добавьте основной пакет Dublin

Для получения более общей информации, такой как автор, название и дополнительные значения, создайте пакет DublinCore и установите его атрибуты. Добавьте также этот пакет в метаданные XMP.

    DublinCorePackage dublinCorePackage = new DublinCorePackage();
    dublinCorePackage.setAuthor("Charles Bukowski");
    dublinCorePackage.setTitle("Confessions of a Man Insane Enough to Live With the Beasts");
    dublinCorePackage.addValue("dc:movie", "Barfly");
    xmpData.addPackage(dublinCorePackage);

Шаг 8. Обновите метаданные XMP в образе.

Обновите метаданные XMP в образе, используя командуsetXmpData метод.

    ByteArrayOutputStream ms = new ByteArrayOutputStream();
    image.setXmpData(xmpData);

Шаг 9: Сохраните изображение

Теперь вы можете сохранить изображение со встроенными метаданными XMP на диске или в потоке памяти.

    image.save(ms);

Шаг 10. Загрузите изображение и получите метаданные XMP.

Чтобы получить метаданные XMP из изображения, загрузите изображение из потока памяти или диска и получите доступ к данным XMP.

    try (TiffImage img = (TiffImage) Image.load(new ByteArrayInputStream(ms.toByteArray()))) {
        XmpPacketWrapper imgXmpData = img.getXmpData();
        for (XmpPackage pack : imgXmpData.getPackages()) {
            // Использовать данные пакета...
        }
    }
}

Поздравляем! Вы успешно научились обрабатывать данные XMP в изображениях с помощью Aspose.Imaging for Java. Это позволяет вам хранить и извлекать ценные метаданные в файлах изображений.

Заключение

В этом уроке мы рассмотрели, как работать с метаданными XMP в изображениях с помощью Aspose.Imaging для Java. Следуя пошаговому руководству, вы сможете легко встраивать и извлекать метаданные в файлы изображений, повышая их информативность и удобство использования.

Часто задаваемые вопросы

Вопрос 1. Что такое метаданные XMP?

О1: XMP (Расширяемая платформа метаданных) — это стандарт для встраивания метаданных в файлы различных типов, включая изображения. Он позволяет хранить такую информацию, как автор, название, описание и многое другое, внутри самого файла.

Вопрос 2. Почему метаданные XMP важны?

Ответ 2. Метаданные XMP необходимы для организации и классификации цифровых активов. Это помогает определить право собственности, описать контент и добавить контекст к файлам, например изображениям, делая их более доступными и значимыми.

Вопрос 3. Могу ли я редактировать метаданные XMP после встраивания их в изображение?

О3: Да, вы можете редактировать метаданные XMP после встраивания их в изображение. Aspose.Imaging for Java предоставляет инструменты для изменения и обновления атрибутов метаданных по мере необходимости.

Вопрос 4. Является ли Aspose.Imaging for Java бесплатным инструментом?

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

Вопрос 5: Где я могу получить помощь и поддержку по Aspose.Imaging for Java?

О5: Если у вас возникнут какие-либо проблемы или возникнут вопросы, связанные с Aspose.Imaging for Java, вы можете посетитьФорумы Aspose.Imaging за поддержку и руководство сообщества.

Полный исходный код

        
String dataDir = "Your Document Directory" + "ConvertingImages/";
// Укажите размер изображения, определив прямоугольник.
Rectangle rect = new Rectangle(0, 0, 100, 200);
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.TiffJpegRgb);
tiffOptions.setPhotometric(TiffPhotometrics.MinIsBlack);
tiffOptions.setBitsPerSample(new int[] { 8 });
// создайте новое изображение только для примера
try (TiffImage image = new TiffImage(new TiffFrame(tiffOptions, rect.getWidth(), rect.getHeight())))
{
	// создать экземпляр XMP-заголовка
	XmpHeaderPi xmpHeader = new XmpHeaderPi();
	xmpHeader.setGuid(dataDir);
	// создать экземпляр Xmp-TrailerPi
	XmpTrailerPi xmpTrailer = new XmpTrailerPi(true);
	// создайте экземпляр метакласса XMP для установки различных атрибутов
	XmpMeta xmpMeta = new XmpMeta();
	xmpMeta.addAttribute("Author", "Mr Smith");
	xmpMeta.addAttribute("Description", "The fake metadata value");
	//создайте экземпляр XmpPacketWrapper, содержащий все метаданные
	XmpPacketWrapper xmpData = new XmpPacketWrapper(xmpHeader, xmpTrailer, xmpMeta);
	// создайте экземпляр пакета Photoshop и установите атрибуты Photoshop
	PhotoshopPackage photoshopPackage = new PhotoshopPackage();
	photoshopPackage.setCity("London");
	photoshopPackage.setCountry("England");
	photoshopPackage.setColorMode(ColorMode.Rgb);
	// добавить пакет фотошопа в метаданные XMP
	xmpData.addPackage(photoshopPackage);
	// создайте экземпляр пакета DublinCore и установите атрибуты dublinCore
	DublinCorePackage dublinCorePackage = new DublinCorePackage();
	dublinCorePackage.setAuthor("Charles Bukowski");
	dublinCorePackage.setTitle("Confessions of a Man Insane Enough to Live With the Beasts");
	dublinCorePackage.addValue("dc:movie", "Barfly");
	// добавить пакет dublinCore в метаданные XMP
	xmpData.addPackage(dublinCorePackage);
	ByteArrayOutputStream ms = new ByteArrayOutputStream();
	// обновить метаданные XMP в изображение
	image.setXmpData(xmpData);
	// Сохранение изображения на диске или в потоке памяти
	image.save(ms);
	// Загрузите изображение из потока памяти или с диска, чтобы прочитать/получить метаданные.
	try (TiffImage img = (TiffImage) Image.load(new ByteArrayInputStream(ms.toByteArray())))
	{
		// Получение метаданных XMP
		XmpPacketWrapper imgXmpData = img.getXmpData();
		for (XmpPackage pack : imgXmpData.getPackages())
		{
			// Использовать данные пакета...
		}
	}
}