PPTX DOCX XLSX PDF ODP
Aspose.Imaging  skirta Java
SVG

Pakeiskite foną SVG naudojant Java

Kurkite savo Java programas, kad pakeistumėte foną SVG failuose naudodami serverio API.

Kaip pakeisti foną SVG failuose naudojant Java

Dažnai norint pasiekti idealų vaizdą, reikia pakeisti foną. Norint pasiekti norimą SVG formato vaizdo efektą, priekinio plano objektai turi būti izoliuoti nuo likusios nuotraukos. Automatinis objektų aptikimas galimas, jei fonas yra vienodas. Jei nuotraukos fonas nelygus arba objektų atskyrimas yra sudėtingas, rekomenduojama iš anksto pažymėti vaizdą. Tai apima nuotraukos stačiakampių sričių, kuriose yra numatyti objektai, nustatymą ir jų tipų nurodymą. Tai galima padaryti rankiniu būdu arba automatiškai naudojant „Cloud API“ objektų atpažinimo funkciją. Pasirinkus objektą ir pradinį fono pašalinimą, galima pritaikyti naują foną arba įdiegti skaidrumą. Norėdami pakeisti foną SVG failuose, naudosime Aspose.Imaging for Java API, kuri yra daug funkcijų, galinga ir lengvai naudojama vaizdo manipuliavimo ir konvertavimo API, skirta Java platformai. Naujausią jos versiją galite atsisiųsti tiesiai iš Maven ir įdiekite jį savo Maven pagrįstame projekte, pridėdami toliau nurodytas konfigūracijas prie pom.xml.

Repository

<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>

Priklausomybė

<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging</artifactId>
<version>version of aspose-imaging API</version>
<classifier>jdk16</classifier>
</dependency>

Veiksmai, kaip pakeisti foną SVGs naudojant Java

Jums reikia aspose-imaging-version-jdk16.jar norėdami išbandyti šią darbo eigą savo aplinkoje.

  • Įkelkite SVG failus naudodami Image.load metodą
  • Keisti foną;
  • Išsaugokite vaizdą į diską palaikomu Aspose.Imaging formatu

Sistemos reikalavimai

„Aspose.Imaging“, skirta Java, palaikoma visose pagrindinėse operacinėse sistemose. Tiesiog įsitikinkite, kad turite šias būtinas sąlygas.

  • Įdiegta JDK 1.6 arba naujesnė versija.
 

Keisti foną SVG vaizduose – Java

import com.aspose.imaging.*;
import com.aspose.imaging.fileformats.png.PngColorType;
import com.aspose.imaging.imageoptions.PngOptions;
import com.aspose.imaging.masking.IMaskingSession;
import com.aspose.imaging.masking.ImageMasking;
import com.aspose.imaging.masking.options.*;
import com.aspose.imaging.masking.result.MaskingResult;
import com.aspose.imaging.sources.FileCreateSource;
import java.io.File;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
//Most common example to demonstrate background change/remove tool
removeBackgroundGenericExample();
// Folder that contains images to process
static final String templatesFolder = "c:\\Data\\";
public static void removeBackgroundProcessingWithManualRectangles()
{
List<String> rasterFormats = Arrays.asList("jpg", "png", "bmp", "apng",
"dicom", "jp2", "j2k", "tga", "webp", "tif", "gif");
List<String> vectorFormats = Arrays.asList("svg", "otg", "odg", "eps",
"wmf", "emf", "wmz", "emz", "cmx", "cdr");
List<String> allFormats = new LinkedList<>(rasterFormats);
allFormats.addAll(vectorFormats);
allFormats.forEach(new Consumer<String>()
{
@Override
public void accept(String formatExt)
{
String inputFile = templatesFolder + "couple." + formatExt;
boolean isVectorFormat = vectorFormats.contains(formatExt);
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = rasterizeVectorImage(formatExt, inputFile);
}
String outputFile = templatesFolder + "remove_background_manual_rectangles." + formatExt;
System.out.println("Processing " + formatExt);
try (RasterImage image = (RasterImage) Image.load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/java/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
AutoMaskingGraphCutOptions maskingOptions = new AutoMaskingGraphCutOptions();
maskingOptions.setFeatheringRadius(2);
maskingOptions.setMethod(SegmentationMethod.GraphCut);
AutoMaskingArgs maskingArgs = new AutoMaskingArgs();
maskingArgs.setObjectsRectangles(new Rectangle[]
{
// girl's bound box
new Rectangle(87, 47, 123, 308),
// boy's bound box
new Rectangle(180, 24, 126, 224)
});
maskingOptions.setArgs(maskingArgs);
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
pngOptions.setSource(new FileCreateSource(outputFile, false));
maskingOptions.setExportOptions(pngOptions);
IMaskingSession maskingSession = new ImageMasking(image)
.createSession(maskingOptions);
try
{
// first run of segmentation
maskingSession.decompose().dispose();
AutoMaskingArgs argsWithUserMarkers = new AutoMaskingArgs();
argsWithUserMarkers.setObjectsPoints(new Point[][]
{
// background markers
null,
// foreground markers
new UserMarker()
// boy's head
.addPoint(218, 48, 10)
// girl's head
.addPoint(399, 66, 10)
// girs's body
.addPoint(158, 141, 10)
.addPoint(158, 209, 20)
.addPoint(115, 225, 5)
.getPoints()
});
try (MaskingResult maskingResult = maskingSession
.improveDecomposition(argsWithUserMarkers))
{
try (Image resultImage = maskingResult.get_Item(1).getImage())
{
resultImage.save();
}
}
}
finally
{
maskingSession.dispose();
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
new File(inputFile).delete();
}
}
});
}
public static void removeBackgroundAutoProcessingWithAssumedObjects()
{
List<String> rasterFormats = Arrays.asList("jpg", "png", "bmp", "apng",
"dicom", "jp2", "j2k", "tga", "webp", "tif", "gif");
List<String> vectorFormats = Arrays.asList("svg", "otg", "odg", "eps",
"wmf", "emf", "wmz", "emz", "cmx", "cdr");
List<String> allFormats = new LinkedList<>(rasterFormats);
allFormats.addAll(vectorFormats);
allFormats.forEach(new Consumer<String>() {
@Override
public void accept(String formatExt)
{
String inputFile = templatesFolder + "couple." + formatExt;
boolean isVectorFormat = vectorFormats.contains(formatExt);
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = rasterizeVectorImage(formatExt, inputFile);
}
String outputFile = templatesFolder
+ "remove_background_auto_assumed_objects." + formatExt;
System.out.println("Processing " + formatExt);
try (RasterImage image = (RasterImage) Image.load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/java/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
AutoMaskingGraphCutOptions maskingOptions = new AutoMaskingGraphCutOptions();
final LinkedList<AssumedObjectData> assumedObjects = new LinkedList<>();
// girl's bound box
assumedObjects.add(
new AssumedObjectData(DetectedObjectType.Human,
new Rectangle(87, 47, 123, 308)));
// boy's bound box
assumedObjects.add(
new AssumedObjectData(DetectedObjectType.Human,
new Rectangle(180, 24, 126, 224)));
maskingOptions.setAssumedObjects(assumedObjects);
maskingOptions.setCalculateDefaultStrokes(true);
maskingOptions.setFeatheringRadius(1);
maskingOptions.setMethod(SegmentationMethod.GraphCut);
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
pngOptions.setSource(new FileCreateSource(outputFile, false));
maskingOptions.setExportOptions(pngOptions);
maskingOptions.setBackgroundReplacementColor(Color.getGreen());
try (MaskingResult maskingResult = new ImageMasking(image)
.decompose(maskingOptions))
{
try (Image resultImage = maskingResult.get_Item(1).getImage())
{
resultImage.save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
new File(inputFile).delete();
}
}
});
}
public static void removeBackgroundAutoProcessing()
{
List<String> rasterFormats = Arrays.asList("jpg", "png", "bmp", "apng",
"dicom", "jp2", "j2k", "tga", "webp", "tif", "gif");
List<String> vectorFormats = Arrays.asList("svg", "otg", "odg", "eps",
"wmf", "emf", "wmz", "emz", "cmx", "cdr");
List<String> allFormats = new LinkedList<>(rasterFormats);
allFormats.addAll(vectorFormats);
allFormats.forEach(new Consumer<String>() {
@Override
public void accept(String formatExt)
{
String inputFile = templatesFolder + "couple." + formatExt;
boolean isVectorFormat = vectorFormats.contains(formatExt);
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = rasterizeVectorImage(formatExt, inputFile);
}
String outputFile = templatesFolder + "remove_background_auto." + formatExt;
System.out.println("Processing " + formatExt);
try (RasterImage image = (RasterImage) Image.load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/java/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
AutoMaskingGraphCutOptions maskingOptions = new AutoMaskingGraphCutOptions();
maskingOptions.setFeatheringRadius(1);
maskingOptions.setMethod(SegmentationMethod.GraphCut);
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
pngOptions.setSource(new FileCreateSource(outputFile, false));
maskingOptions.setExportOptions(pngOptions);
maskingOptions.setBackgroundReplacementColor(Color.getGreen());
try (MaskingResult maskingResult = new ImageMasking(image)
.decompose(maskingOptions))
{
try (Image resultImage = maskingResult.get_Item(1).getImage())
{
resultImage.save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
new File(inputFile).delete();
}
}
});
}
public static void removeBackgroundGenericExample()
{
List<String> rasterFormats = Arrays.asList("jpg", "png", "bmp", "apng",
"dicom", "jp2", "j2k", "tga", "webp", "tif", "gif");
List<String> vectorFormats = Arrays.asList("svg", "otg", "odg", "eps",
"wmf", "emf", "wmz", "emz", "cmx", "cdr");
List<String> allFormats = new LinkedList<>(rasterFormats);
allFormats.addAll(vectorFormats);
allFormats.forEach(new Consumer<String>() {
@Override
public void accept(String formatExt)
{
String inputFile = templatesFolder + "couple." + formatExt;
boolean isVectorFormat = vectorFormats.contains(formatExt);
//Need to rasterize vector formats before background remove
if (isVectorFormat)
{
inputFile = rasterizeVectorImage(formatExt, inputFile);
}
String outputFile = templatesFolder + "remove_background." + formatExt;
System.out.println("Processing " + formatExt);
try (RasterImage image = (RasterImage) Image.load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/java/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
AutoMaskingGraphCutOptions maskingOptions = new AutoMaskingGraphCutOptions();
maskingOptions.setCalculateDefaultStrokes(true);
maskingOptions.setFeatheringRadius(1);
maskingOptions.setMethod(SegmentationMethod.GraphCut);
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
pngOptions.setSource(new FileCreateSource(outputFile, false));
maskingOptions.setExportOptions(pngOptions);
maskingOptions.setBackgroundReplacementColor(Color.getGreen());
try (MaskingResult maskingResult = new ImageMasking(image)
.decompose(maskingOptions))
{
try (Image resultImage = maskingResult.get_Item(1).getImage())
{
resultImage.save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
new File(inputFile).delete();
}
}
});
}
private static String rasterizeVectorImage(String formatExt, String inputFile)
{
String outputFile = templatesFolder + "rasterized."+ formatExt + ".png";
try (Image image = Image.load(inputFile))
{
image.save(outputFile, new PngOptions());
}
return outputFile;
}
class UserMarker
{
private final List<Point> list = new LinkedList<>();
public UserMarker addPoint(int left, int top, int radius)
{
for (int y = top - radius; y <= top + radius; y++)
{
for (int x = left - radius; x <= left + radius; x++)
{
this.list.add(new Point(x, y));
}
}
return this;
}
public Point[] getPoints()
{
return this.list.toArray(new Point[0]);
}
}
 
  • Apie „Aspose.Imaging“, skirta Java API

    Aspose.Imaging API yra vaizdo apdorojimo sprendimas, skirtas kurti, modifikuoti, piešti ar konvertuoti vaizdus (nuotraukas) programose. Ji siūlo: kelių platformų vaizdo apdorojimą, įskaitant, bet tuo neapsiribojant, konvertavimą tarp įvairių vaizdo formatų (įskaitant vienodą kelių puslapių arba kelių kadrų vaizdo apdorojimą), modifikacijas, tokias kaip piešimas, darbas su grafiniais primityvais, transformacijos (keisti dydį, apkarpyti, apversti ir pasukti). , dvejetainis, pilkos spalvos tonas, koregavimas), pažangios vaizdo apdorojimo funkcijos (filtravimas, keitimas, maskavimas, iškrypimas) ir atminties optimizavimo strategijos. Tai yra atskira biblioteka ir nepriklauso nuo jokios programinės įrangos vaizdo operacijoms. Projektuose galima lengvai pridėti didelio našumo vaizdo konvertavimo funkcijų naudojant vietines API. Tai yra 100 % privačios vietinės API, o vaizdai apdorojami jūsų serveriuose.

    Pakeiskite SVG foną naudodami internetinę programą

    Pakeiskite SVG dokumentų foną apsilankę Live Demos svetainėje . Tiesioginė demonstracinė versija turi šiuos privalumus

      Nereikia nieko atsisiųsti ar nustatyti
      Nereikia rašyti jokio kodo
      Tiesiog įkelkite SVG failus ir paspauskite mygtuką "Keisti foną dabar".
      Iškart gaukite gauto failo atsisiuntimo nuorodą

    SVG Kas yra SVG Failo formatas

    SVG failai yra keičiamo dydžio vektorinės grafikos failai, kurie naudoja XML pagrįstą teksto formatą vaizdo išvaizdai apibūdinti. Žodis Scalable reiškia faktą, kad SVG galima keisti iki skirtingų dydžių neprarandant kokybės. Tekstinis tokių failų aprašymas daro juos nepriklausomus nuo skiriamosios gebos. Tai vienas iš dažniausiai naudojamų interneto svetainių kūrimo ir spausdinimo grafikos formatų, siekiant mastelio. Tačiau formatą galima naudoti tik dvimatei grafikai. SVG failus galima peržiūrėti / atidaryti beveik visose šiuolaikinėse naršyklėse, įskaitant Chrome, Internet Explorer, Firefox ir Safari.

    Skaityti daugiau

    Kiti palaikomi keitimo fono formatai

    Naudojant Java, galima lengvai pakeisti foną įvairiais formatais, įskaitant.

    APNG (Animuota nešiojama tinklo grafika)
    BMP (Bitmap paveikslėlis)
    ICO (Windows piktograma)
    JPG (Jungtinė fotografijos ekspertų grupė)
    DIB (Nuo įrenginio nepriklausomas bitmap)
    DICOM (Skaitmeninis vaizdas ir ryšiai)
    DJVU (Grafikos formatas)
    DNG (Skaitmeninio fotoaparato vaizdas)
    EMF (Patobulintas metafailo formatas)
    EMZ („Windows“ suspaustas patobulintas metafailas)
    GIF (Grafinis mainų formatas)
    JP2 (JPEG 2000)
    J2K („Wavelet“ suspaustas vaizdas)
    PNG (Nešiojamoji tinklo grafika)
    TIFF (Pažymėtas vaizdo formatas)
    WEBP (Rastrinis žiniatinklio vaizdas)
    WMF (Microsoft Windows metafailas)
    WMZ (Suspausta Windows Media Player oda)
    TGA (Targa grafika)
    EPS (Inkapsuliuota PostScript kalba)
    CDR (Vektorinio piešimo vaizdas)
    CMX (Corel Exchange vaizdas)
    OTG (OpenDocument standartas)
    ODG (Apache OpenOffice Draw formatas)