Het Gebruik van Aanpassingslaag voor PSD-Verbeteringen
Overzicht
Dit artikel verkent het bewerken van aanpassingslagen in Aspose.PSD voor Java. Aanpassingslagen zijn een krachtige functie in beeldbewerking waarmee u niet-destructieve wijzigingen kunt aanbrengen in uw afbeeldingen. Aspose.PSD biedt een uitgebreide set aanpassingslaagklassen die u kunt gebruiken om verschillende aspecten van uw afbeeldingen te wijzigen.
Om het bewerken van aanpassingslagen te demonstreren, zullen we een voorbeeldcodefragment aan het einde van de pagina verstrekken dat een PSD-afbeelding laadt en verschillende aanpassingen toepast op de lagen.
In het volgende codefragment beginnen we met het laden van de PSD-afbeelding met behulp van de methode PsdImage.load(). Vervolgens stellen we de opties in voor het opslaan van de uitvoer-PNG-bestanden. De klasse PngOptions stelt ons in staat het kleurtype voor de uitvoerafbeelding te specificeren.
Vervolgens itereren we door elke laag in de PSD-afbeelding en controleren we het type met de methode isAssignable(). Als de laag van een specifiek type is, casten we deze naar dat type met behulp van de methode cast() en passen we de gewenste aanpassing toe. Bijvoorbeeld, we passen de helderheid en het contrast aan van een BrightnessContrastLayer, wijzigen de niveaus van een LevelsLayer, voegen een curve-punt toe aan een CurvesLayer, enzovoort.
U kunt extra code toevoegen om andere aanpassingen toe te passen op hun respectievelijke lagen. Aspose.PSD biedt een breed scala aan aanpassingslaagklassen, zoals ExposureLayer, HueSaturationLayer, ColorBalanceAdjustmentLayer, BlackWhiteAdjustmentLayer, PhotoFilterLayer, ChannelMixerLayer, InvertAdjustmentLayer, PosterizeLayer, ThresholdLayer, SelectiveColorLayer, en meer.
Tenslotte slaan we de aangepaste afbeelding op met behulp van de methode save() van de klasse PsdImage.
Dit geeft een basisoverzicht van hoe u aanpassingslagen kunt bewerken in Aspose.PSD voor Java. U kunt de aanpassingen aanpassen aan uw vereisten en de verschillende opties verkennen die beschikbaar zijn in de API-documentatie.
Bekijk hieronder het volledige voorbeeld.
Voorbeeld
public class AdjustmentLayerEnhancementTest { | |
public static void main(String[] args) { | |
String sourcePsd = "AllAdjustments.psd"; | |
String outputOrigPng = "AllAdjustments_orig.png"; | |
String outputModPng = "AllAdjustments_mod.png"; | |
PngOptions pngOpt = new PngOptions(); | |
pngOpt.setColorType(PngColorType.TruecolorWithAlpha); | |
try (PsdImage image = (PsdImage) PsdImage.load(sourcePsd)) { | |
image.save(outputOrigPng, pngOpt); | |
Layer[] layers = image.getLayers(); | |
for (Layer layer : layers) { | |
if (layer instanceof BrightnessContrastLayer) { | |
BrightnessContrastLayer br = (BrightnessContrastLayer) layer; | |
br.setBrightness(-br.getBrightness()); | |
br.setContrast(-br.getContrast()); | |
} | |
if (layer instanceof LevelsLayer) { | |
LevelsLayer levels = (LevelsLayer) layer; | |
LevelChannel masterChannel = levels.getMasterChannel(); | |
masterChannel.setOutputShadowLevel((short) 30); | |
masterChannel.setInputShadowLevel((short) 5); | |
masterChannel.setInputMidtoneLevel(2); | |
masterChannel.setOutputHighlightLevel((short) 213); | |
masterChannel.setInputHighlightLevel((short) 120); | |
} | |
if (layer instanceof CurvesLayer) { | |
CurvesLayer curves = (CurvesLayer) layer; | |
CurvesContinuousManager manager = (CurvesContinuousManager) curves.getCurvesManager(); | |
manager.addCurvePoint(2, (byte) 150, (byte) 180); | |
} | |
if (layer instanceof ExposureLayer) { | |
ExposureLayer exp = (ExposureLayer) layer; | |
exp.setExposure((float) (exp.getExposure() + 0.1)); | |
} | |
if (layer instanceof HueSaturationLayer) { | |
HueSaturationLayer hue = (HueSaturationLayer) layer; | |
hue.setHue((short) -15); | |
hue.setSaturation((short) 30); | |
} | |
if (layer instanceof ColorBalanceAdjustmentLayer) { | |
ColorBalanceAdjustmentLayer colorBal = (ColorBalanceAdjustmentLayer) layer; | |
colorBal.setMidtonesCyanRedBalance((short) 30); | |
} | |
if (layer instanceof BlackWhiteAdjustmentLayer) { | |
BlackWhiteAdjustmentLayer bw = (BlackWhiteAdjustmentLayer) layer; | |
bw.setReds(30); | |
bw.setGreens(25); | |
bw.setBlues(40); | |
} | |
if (layer instanceof PhotoFilterLayer) { | |
PhotoFilterLayer photoFilter = (PhotoFilterLayer) layer; | |
photoFilter.setColor(Color.getAzure()); | |
} | |
if (layer instanceof ChannelMixerLayer) { | |
ChannelMixerLayer channelMixer = (ChannelMixerLayer) layer; | |
RgbMixerChannel channel = (RgbMixerChannel) channelMixer.getChannelByIndex(0); | |
channel.setGreen((short) 120); | |
channel.setRed((short) 50); | |
channel.setBlue((short) 70); | |
channel.setConstant((short) (channel.getConstant() + 10)); | |
} | |
if (layer instanceof PosterizeLayer) { | |
PosterizeLayer post = (PosterizeLayer) layer; | |
post.setLevels((short) 3); | |
} | |
if (layer instanceof ThresholdLayer) { | |
ThresholdLayer threshold = (ThresholdLayer) layer; | |
threshold.setLevel((short) 15); | |
} | |
if (layer instanceof SelectiveColorLayer) { | |
SelectiveColorLayer selectiveColor = (SelectiveColorLayer) layer; | |
CmykCorrection correction = new CmykCorrection(); | |
correction.setCyan((short) 25); | |
correction.setMagenta((short) 10); | |
correction.setYellow((short) -15); | |
correction.setBlack((short) 5); | |
selectiveColor.setCmykCorrection(SelectiveColorsTypes.Cyans, correction); | |
} | |
} | |
image.save(outputModPng, pngOpt); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
} |