XMP-datahantering i bilder med Aspose.Imaging för Java

Aspose.Imaging för Java är ett mångsidigt och kraftfullt bibliotek för att arbeta med bilder i olika format. Denna handledning guidar dig genom processen att hantera XMP-data (Extensible Metadata Platform) i bilder med Aspose.Imaging för Java. XMP är en standard för att bädda in metadata i bildfiler, så att du kan lagra värdefull information som författare, beskrivning och mer.

Förutsättningar

Innan du börjar, se till att du har följande förutsättningar på plats:

  • En Java-utvecklingsmiljö konfigurerad på din dator.
  • Aspose.Imaging för Java-biblioteket installerat. Du kan ladda ner den frånAspose.Imaging för Java webbplats.
  • En grundläggande förståelse för Java-programmering.

Importera paket

Börja med att importera de nödvändiga paketen till ditt Java-projekt. Du kan lägga till följande importsatser i början av din kod:

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;

Låt oss nu dela upp exemplet i en steg-för-steg-guide:

Steg 1: Ange bildstorlek och TIFF-alternativ

Först, definiera katalogen där din bild ska lagras och skapa en rektangel för att ange storleken på bilden. I det här exemplet använder vi en Tiff-bild med vissa alternativ.

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

Steg 2: Skapa en ny bild

Skapa nu en ny bild med de angivna alternativen. Den här bilden kommer att användas för att lagra XMP-metadata.

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

Steg 3: Skapa XMP Header och Trailer

Skapa instanser av XMP-Header och XMP-Trailer för din XMP-metadata. Dessa rubriker och trailers hjälper till att definiera metadatastrukturen.

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

Steg 4: Skapa XMP-metainformation

Skapa nu en instans av XMP-meta för att ställa in olika attribut. Du kan lägga till information som författare och beskrivning.

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

Steg 5: Skapa XMP Packet Wrapper

Skapa en instans av XmpPacketWrapper som innehåller XMP-huvudet, trailern och metainformationen.

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

Steg 6: Lägg till Photoshop-paket

För att lagra Photoshop-specifik information, skapa ett Photoshop-paket och ställ in dess attribut, såsom stad, land och färgläge. Lägg sedan till det här paketet till XMP-metadata.

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

Steg 7: Lägg till Dublin Core Package

För mer allmän information, som författare, titel och ytterligare värden, skapa ett DublinCore-paket och ställ in dess attribut. Lägg till detta paket till XMP-metadata också.

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

Steg 8: Uppdatera XMP-metadata i bilden

Uppdatera XMP-metadata till bilden med hjälp avsetXmpData metod.

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

Steg 9: Spara bilden

Du kan nu spara bilden med den inbäddade XMP-metadatan på disken eller i en minnesström.

    image.save(ms);

Steg 10: Ladda bilden och hämta XMP-metadata

För att hämta XMP-metadata från bilden laddar du bilden från minnesströmmen eller disken och kommer åt XMP-data.

    try (TiffImage img = (TiffImage) Image.load(new ByteArrayInputStream(ms.toByteArray()))) {
        XmpPacketWrapper imgXmpData = img.getXmpData();
        for (XmpPackage pack : imgXmpData.getPackages()) {
            // Använd paketdata ...
        }
    }
}

Grattis! Du har framgångsrikt lärt dig hur du hanterar XMP-data i bilder med Aspose.Imaging för Java. Detta gör att du kan lagra och hämta värdefull metadata i dina bildfiler.

Slutsats

I den här handledningen undersökte vi hur man arbetar med XMP-metadata i bilder med Aspose.Imaging för Java. Genom att följa steg-för-steg-guiden kan du enkelt bädda in och hämta metadata i dina bildfiler, vilket förbättrar deras information och användbarhet.

FAQ’s

F1: Vad är XMP-metadata?

S1: XMP (Extensible Metadata Platform) är en standard för att bädda in metadata i olika typer av filer, inklusive bilder. Det låter dig lagra information som författare, titel, beskrivning och mer i själva filen.

F2: Varför är XMP-metadata viktig?

S2: XMP-metadata är avgörande för att organisera och kategorisera digitala tillgångar. Det hjälper till att tillskriva ägande, beskriva innehåll och lägga till sammanhang till filer som bilder, vilket gör dem mer tillgängliga och meningsfulla.

F3: Kan jag redigera XMP-metadata efter att ha bäddat in den i en bild?

S3: Ja, du kan redigera XMP-metadata efter att ha bäddat in den i en bild. Aspose.Imaging för Java tillhandahåller verktyg för att modifiera och uppdatera metadataattribut efter behov.

F4: Är Aspose.Imaging för Java ett gratisverktyg?

S4: Aspose.Imaging för Java erbjuder en gratis testversion, men för full funktionalitet och utökad användning krävs en betald licens. Du kan utforska alternativen påAspose.Imaging för Java webbplats.

F5: Var kan jag få hjälp och support för Aspose.Imaging för Java?

S5: Om du stöter på några problem eller har frågor relaterade till Aspose.Imaging för Java, kan du besökaAspose.Imaging forum för samhällsstöd och vägledning.

Komplett källkod

        
String dataDir = "Your Document Directory" + "ConvertingImages/";
// Ange storleken på bilden genom att definiera en rektangel
Rectangle rect = new Rectangle(0, 0, 100, 200);
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.TiffJpegRgb);
tiffOptions.setPhotometric(TiffPhotometrics.MinIsBlack);
tiffOptions.setBitsPerSample(new int[] { 8 });
// skapa den helt nya bilden bara för exempeländamål
try (TiffImage image = new TiffImage(new TiffFrame(tiffOptions, rect.getWidth(), rect.getHeight())))
{
	// skapa en instans av XMP-Header
	XmpHeaderPi xmpHeader = new XmpHeaderPi();
	xmpHeader.setGuid(dataDir);
	// skapa en instans av Xmp-TrailerPi
	XmpTrailerPi xmpTrailer = new XmpTrailerPi(true);
	// skapa en instans av XMP-metaklassen för att ställa in olika attribut
	XmpMeta xmpMeta = new XmpMeta();
	xmpMeta.addAttribute("Author", "Mr Smith");
	xmpMeta.addAttribute("Description", "The fake metadata value");
	//skapa en instans av XmpPacketWrapper som innehåller all metadata
	XmpPacketWrapper xmpData = new XmpPacketWrapper(xmpHeader, xmpTrailer, xmpMeta);
	// skapa en instans av Photoshop-paketet och ställ in photoshop-attribut
	PhotoshopPackage photoshopPackage = new PhotoshopPackage();
	photoshopPackage.setCity("London");
	photoshopPackage.setCountry("England");
	photoshopPackage.setColorMode(ColorMode.Rgb);
	// lägg till Photoshop-paket i XMP-metadata
	xmpData.addPackage(photoshopPackage);
	// skapa en instans av DublinCore-paketet och ange dublinCore-attribut
	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");
	// lägg till dublinCore Package i XMP-metadata
	xmpData.addPackage(dublinCorePackage);
	ByteArrayOutputStream ms = new ByteArrayOutputStream();
	// uppdatera XMP-metadata till bild
	image.setXmpData(xmpData);
	// Spara bilden på disken eller i minnesströmmen
	image.save(ms);
	// Ladda bilden från minnesströmmen eller från disken för att läsa/hämta metadata
	try (TiffImage img = (TiffImage) Image.load(new ByteArrayInputStream(ms.toByteArray())))
	{
		// Hämta XMP-metadata
		XmpPacketWrapper imgXmpData = img.getXmpData();
		for (XmpPackage pack : imgXmpData.getPackages())
		{
			// Använd paketdata ...
		}
	}
}