Obsługa danych XMP w obrazach za pomocą Aspose.Imaging dla Java

Aspose.Imaging dla Java to wszechstronna i wydajna biblioteka do pracy z obrazami w różnych formatach. Ten samouczek poprowadzi Cię przez proces obsługi danych XMP (Extensible Metadata Platform) w obrazach przy użyciu Aspose.Imaging for Java. XMP to standard osadzania metadanych w plikach obrazów, umożliwiający przechowywanie cennych informacji, takich jak autor, opis i inne.

Warunki wstępne

Zanim zaczniesz, upewnij się, że spełnione są następujące wymagania wstępne:

  • Środowisko programistyczne Java skonfigurowane na Twoim komputerze.
  • Zainstalowana biblioteka Aspose.Imaging for Java. Można go pobrać zAspose.Imaging dla witryny Java.
  • Podstawowa znajomość programowania w języku Java.

Importowanie pakietów

Zacznij od zaimportowania niezbędnych pakietów do projektu Java. Na początku kodu możesz dodać następujące instrukcje importu:

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;

Podzielmy teraz przykład na przewodnik krok po kroku:

Krok 1: Określ rozmiar obrazu i opcje Tiff

Najpierw zdefiniuj katalog, w którym będzie przechowywany obraz, i utwórz prostokąt, aby określić rozmiar obrazu. W tym przykładzie używamy obrazu Tiff z pewnymi opcjami.

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 });

Krok 2: Utwórz nowy obraz

Teraz utwórz nowy obraz z określonymi opcjami. Ten obraz będzie używany do przechowywania metadanych XMP.

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

Krok 3: Utwórz nagłówek i zwiastun XMP

Utwórz instancje XMP-Header i XMP-Trailer dla swoich metadanych XMP. Te nagłówki i końcówki pomagają zdefiniować strukturę metadanych.

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

Krok 4: Utwórz metainformacje XMP

Teraz utwórz instancję meta XMP, aby ustawić różne atrybuty. Możesz dodać informacje takie jak autor i opis.

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

Krok 5: Utwórz opakowanie pakietów XMP

Utwórz instancję XmpPacketWrapper zawierającą nagłówek, zwiastun i metainformacje XMP.

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

Krok 6: Dodaj pakiet Photoshop

Aby przechowywać informacje specyficzne dla programu Photoshop, utwórz pakiet programu Photoshop i ustaw jego atrybuty, takie jak miasto, kraj i tryb kolorów. Następnie dodaj ten pakiet do metadanych XMP.

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

Krok 7: Dodaj pakiet Dublin Core

Aby uzyskać bardziej ogólne informacje, takie jak autor, tytuł i dodatkowe wartości, utwórz pakiet DublinCore i ustaw jego atrybuty. Dodaj także ten pakiet do metadanych 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);

Krok 8: Zaktualizuj metadane XMP w obrazie

Zaktualizuj metadane XMP do obrazu za pomocą plikusetXmpData metoda.

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

Krok 9: Zapisz obraz

Możesz teraz zapisać obraz z osadzonymi metadanymi XMP na dysku lub w strumieniu pamięci.

    image.save(ms);

Krok 10: Załaduj obraz i pobierz metadane XMP

Aby pobrać metadane XMP z obrazu, załaduj obraz ze strumienia pamięci lub dysku i uzyskaj dostęp do danych XMP.

    try (TiffImage img = (TiffImage) Image.load(new ByteArrayInputStream(ms.toByteArray()))) {
        XmpPacketWrapper imgXmpData = img.getXmpData();
        for (XmpPackage pack : imgXmpData.getPackages()) {
            // Użyj danych pakietu...
        }
    }
}

Gratulacje! Pomyślnie nauczyłeś się obsługiwać dane XMP w obrazach przy użyciu Aspose.Imaging for Java. Umożliwia to przechowywanie i odzyskiwanie cennych metadanych w plikach obrazów.

Wniosek

W tym samouczku omówiliśmy, jak pracować z metadanymi XMP w obrazach przy użyciu Aspose.Imaging for Java. Postępując zgodnie ze szczegółowym przewodnikiem, możesz łatwo osadzać i pobierać metadane w plikach obrazów, zwiększając ich zawartość informacyjną i użyteczność.

Często zadawane pytania

P1: Co to są metadane XMP?

O1: XMP (Extensible Metadata Platform) to standard osadzania metadanych w różnych typach plików, w tym w obrazach. Umożliwia przechowywanie informacji, takich jak autor, tytuł, opis i inne, w samym pliku.

P2: Dlaczego metadane XMP są ważne?

Odpowiedź 2: Metadane XMP są niezbędne do organizowania i kategoryzowania zasobów cyfrowych. Pomaga w przypisywaniu własności, opisywaniu treści i dodawaniu kontekstu do plików, takich jak obrazy, czyniąc je bardziej dostępnymi i znaczącymi.

P3: Czy mogę edytować metadane XMP po osadzeniu ich w obrazie?

O3: Tak, możesz edytować metadane XMP po osadzeniu ich w obrazie. Aspose.Imaging for Java zapewnia narzędzia do modyfikowania i aktualizowania atrybutów metadanych w razie potrzeby.

P4: Czy Aspose.Imaging dla Java jest narzędziem darmowym?

O4: Aspose.Imaging dla Java oferuje bezpłatną wersję próbną, ale do pełnej funkcjonalności i rozszerzonego użytkowania wymagana jest płatna licencja. Możesz zapoznać się z opcjami na stronieAspose.Imaging dla witryny Java.

P5: Gdzie mogę uzyskać pomoc i wsparcie dla Aspose.Imaging for Java?

O5: Jeśli napotkasz jakiekolwiek problemy lub masz pytania związane z Aspose.Imaging for Java, możesz odwiedzić stronęFora Aspose.Imaging o wsparcie i wskazówki społeczności.

Kompletny kod źródłowy

        
String dataDir = "Your Document Directory" + "ConvertingImages/";
// Określ rozmiar obrazu, definiując prostokąt
Rectangle rect = new Rectangle(0, 0, 100, 200);
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.TiffJpegRgb);
tiffOptions.setPhotometric(TiffPhotometrics.MinIsBlack);
tiffOptions.setBitsPerSample(new int[] { 8 });
// utwórz zupełnie nowy obraz tylko do celów przykładowych
try (TiffImage image = new TiffImage(new TiffFrame(tiffOptions, rect.getWidth(), rect.getHeight())))
{
	// utwórz instancję nagłówka XMP
	XmpHeaderPi xmpHeader = new XmpHeaderPi();
	xmpHeader.setGuid(dataDir);
	// utwórz instancję Xmp-TrailerPi
	XmpTrailerPi xmpTrailer = new XmpTrailerPi(true);
	// utwórz instancję metaklasy XMP, aby ustawić różne atrybuty
	XmpMeta xmpMeta = new XmpMeta();
	xmpMeta.addAttribute("Author", "Mr Smith");
	xmpMeta.addAttribute("Description", "The fake metadata value");
	//utwórz instancję XmpPacketWrapper zawierającą wszystkie metadane
	XmpPacketWrapper xmpData = new XmpPacketWrapper(xmpHeader, xmpTrailer, xmpMeta);
	// utwórz instancję pakietu Photoshop i ustaw atrybuty Photoshopa
	PhotoshopPackage photoshopPackage = new PhotoshopPackage();
	photoshopPackage.setCity("London");
	photoshopPackage.setCountry("England");
	photoshopPackage.setColorMode(ColorMode.Rgb);
	// dodaj pakiet Photoshopa do metadanych XMP
	xmpData.addPackage(photoshopPackage);
	// utwórz instancję pakietu DublinCore i ustaw atrybuty 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");
	// dodaj pakiet dublinCore do metadanych XMP
	xmpData.addPackage(dublinCorePackage);
	ByteArrayOutputStream ms = new ByteArrayOutputStream();
	// zaktualizuj metadane XMP do obrazu
	image.setXmpData(xmpData);
	// Zapisz obraz na dysku lub w strumieniu pamięci
	image.save(ms);
	// Załaduj obraz ze strumienia pamięci lub z dysku, aby odczytać/pobrać metadane
	try (TiffImage img = (TiffImage) Image.load(new ByteArrayInputStream(ms.toByteArray())))
	{
		// Pobieranie metadanych XMP
		XmpPacketWrapper imgXmpData = img.getXmpData();
		for (XmpPackage pack : imgXmpData.getPackages())
		{
			// Użyj danych pakietu...
		}
	}
}