Beheer afbeeldingstransformatie‑effecten in presentaties met JavaScript

Overzicht

Aspose.Slides stelt afbeeldingsaanpassingen voor als een geordende verzameling van beeldtransformatie‑operaties. Voor een afbeelding‑kader begin je met de Picture van het kader en roep je Picture.getImageTransform aan. De geretourneerde ImageTransformOperationCollection laat je effecten toevoegen, opsommen, inspecteren, verwijderen en opruimen zonder de oorspronkelijke afbeeldingsbytes opnieuw te schrijven.

Dit artikel toont een volledige workflow voor helderheid en contrast, kleurtransformaties, vervaging, transparantie, geordende effectketens, effectieve waarden, verwijdering en PPTX round‑trip verificatie.

Begrijp eigendom van effecten en hergebruik van afbeeldingen

Een afbeelding‑resource en de afbeelding die deze weergeeft zijn verschillende objecten:

  • PPImage slaat de bronafbeeldingsgegevens op of verwijst ernaar en behoort tot de presentatie.
  • Picture maakt deel uit van een opvul‑afbeelding en verwijst naar een afbeelding‑resource terwijl het de beeldtransformatie‑verzameling opslaat.
  • PictureFrame is de dia‑vorm die de bijbehorende opvul‑afbeelding, geometrie, uitsnijdingsinstellingen en andere formattering op kadriveau bezit.

Daarom wijzigen beeldtransformatie‑operaties de bytes in PPImage niet. Wanneer dezelfde PPImage meer dan één keer aan ShapeCollection.addPictureFrame wordt doorgegeven, krijgt elk nieuw afbeelding‑kader zijn eigen Picture en zijn eigen transformatie‑verzameling. Het toepassen van grijswaarden op één kader maakt de andere kaders niet grijs, zelfs niet wanneer ze allemaal dezelfde ingesloten afbeelding‑resource hergebruiken.

Hetzelfde Picture.getImageTransform model wordt ook gebruikt door andere opvul‑afbeeldingen, zoals een vorm‑ of dia‑achtergrond. De onderstaande voorbeelden richten zich op afbeelding‑kaders.

Gebruik geldige parameter‑bereiken en eenheden

De getoonde methoden gebruiken de volgende semantische bereiken en eenheden. Houd waarden binnen deze bereiken, zelfs als een bepaalde bibliotheekversie niet onmiddellijk elke out‑of‑range waarde weigert; het doel‑presentatieformaat kan gegevens normaliseren, weglaten of ongeldige gegevens weigeren tijdens het opslaan of wanneer PowerPoint het bestand opent.

Operatie Parameters Geldig bereik en eenheid
addBrightnessContrastEffect brightness, contrast -100 tot 100, procent; 0 laat de component ongewijzigd.
addGrayScaleEffect Geen Geen numerieke parameters. Alfa blijft ongewijzigd.
addDuotoneEffect color1, color2 Twee kleuren voor donkere en lichte pixels. RGB‑ en alfa‑kanalen in java.awt.Color gebruiken 0 tot 255.
addTintEffect hue, amount Tint (hue) is 0 inclusief tot 360 exclusief, in graden; hoeveelheid (amount) is -100 tot 100, procent.
addHSLEffect hue, saturation, luminance Tint (hue) is 0 inclusief tot 360 exclusief, in graden; verzadiging en luminantie zijn -100 tot 100, procent.
addColorReplaceEffect color De vervangingskleur gebruikt kanaalwaarden van 0 tot 255. Bestaande alfa‑waarden blijven ongewijzigd.
addBlurEffect radius, grow Straal is niet‑negatief en wordt gemeten in points; grow is een Boolean die bepaalt of vervaagd materiaal buiten de oorspronkelijke grenzen mag uitsteken.
addAlphaModulateFixedEffect amount Niet‑negatief percentage. Gebruik 0 tot 100 voor gewone opaciteits‑schaling: 0 is volledig transparant en 100 behoudt de bestaande alfa.
addAlphaReplaceEffect alpha 0 tot 100, procent opaciteit.
addAlphaBiLevelEffect threshold 0 tot 100, procent alfa‑drempel. Waarden eronder worden transparant; waarden gelijk aan of hoger worden ondoorzichtig.

Voor vaste alfa‑modulatie zijn transparantie en opaciteit complementair. Bijvoorbeeld, 35 % transparantie komt overeen met een alfa‑modulatie‑bedrag van 65 %.

Pas helderheid en contrast toe

ImageTransformOperationCollection.addBrightnessContrastEffect retourneert een BrightnessContrast operatie. De scalaire instellingen worden meegegeven wanneer de operatie wordt aangemaakt. BrightnessContrast.getEffective geeft berekende alleen‑lezen waarden terug die kunnen worden geïnspecteerd of gelogd.

Het volgende voorbeeld verhoogt de helderheid met 15 % en het contrast met 20 %, waarna een voorbeeld wordt gerenderd zonder de ingesloten afbeelding te wijzigen:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);

    let image;
    const sourceImage = aspose.slides.Images.fromFile("photo.png");
    try {
        image = presentation.getImages().addImage(sourceImage);
    } finally {
        sourceImage.dispose();
    }

    const pictureFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 50, 400, 260, image);
    const imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
    const brightnessContrast = imageTransform.addBrightnessContrastEffect(15, 20);

    const effectiveValues = brightnessContrast.getEffective();
    console.log("Brightness: " + effectiveValues.getBrightness() + "%");
    console.log("Contrast: " + effectiveValues.getContrast() + "%");

    const preview = slide.getImage();
    try {
        preview.save("brightness-contrast-preview.png", aspose.slides.ImageFormat.Png);
    } finally {
        preview.dispose();
    }
} finally {
    presentation.dispose();
}

BrightnessContrast is een Office 2010 afbeelding‑effect extensie en is minder draagbaar dan het standaard DrawingML luminantie‑effect. Wanneer helderheid en contrast na een PPTX‑round‑trip bewerkbaar moeten blijven, gebruik ImageTransformOperationCollection.addLuminanceEffect en verifieer het resultaat na het heropenen van het bestand. De sectie over format‑beperkingen legt dit onderscheid uitgebreider uit.

Pas kleurovergangen toe

Kleureffecten kunnen onafhankelijk worden toegepast op verschillende afbeelding‑kaders die dezelfde afbeelding‑resource hergebruiken. Het volgende voorbeeld maakt vijf kaders en past grijswaarden, duotone, tint, HSL‑aanpassing en kleur‑vervanging toe.

Duotone bevat twee onafhankelijk bewerkbare kleurparameters: color1 wijst donkere pixels toe, terwijl color2 lichte pixels wijst. Dit maakt het een nuttig voorbeeld van een effect waarvan de instellingen complexer zijn dan een enkele scalaire waarde.

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);

    let image;
    const sourceImage = aspose.slides.Images.fromFile("photo.png");
    try {
        image = presentation.getImages().addImage(sourceImage);
    } finally {
        sourceImage.dispose();
    }

    const grayFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 20, 20, 180, 120, image);
    grayFrame.getPictureFormat().getPicture().getImageTransform().addGrayScaleEffect();

    const duotoneFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 220, 20, 180, 120, image);
    const duotone = duotoneFrame.getPictureFormat().getPicture().getImageTransform().addDuotoneEffect();
    duotone.getColor1().setColor(java.newInstanceSync("java.awt.Color", 0, 0, 128));
    duotone.getColor2().setColor(java.newInstanceSync("java.awt.Color", 255, 215, 0));

    const tintFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 420, 20, 180, 120, image);
    tintFrame.getPictureFormat().getPicture().getImageTransform().addTintEffect(210, 35);

    const hslFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 120, 170, 180, 120, image);
    hslFrame.getPictureFormat().getPicture().getImageTransform().addHSLEffect(30, 20, -10);

    const replacementFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 320, 170, 180, 120, image);
    const colorReplacement = replacementFrame.getPictureFormat().getPicture().getImageTransform().addColorReplaceEffect();
    colorReplacement.getColor().setColor(java.newInstanceSync("java.awt.Color", 100, 149, 237));

    presentation.save("color-transformations.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

addColorReplaceEffect vervangt de kleur van elke pixel door één vaste kleur terwijl alfa behouden blijft. Het verschilt van addColorChangeEffect, dat één bronkleur naar een andere afbeeldt en zowel bron‑ als doelkleurformaten blootlegt.

Voeg vervaging, transparantie en alfa‑effecten toe

addBlurEffect beïnvloedt alle kleurkanalen, inclusief alfa. Stel grow in op true wanneer de vervaagde rand buiten de oorspronkelijke afbeeldingsgrenzen mag uitsteken.

Voor uniforme transparantie, gebruik addAlphaModulateFixedEffect. Het vermenigvuldigt elke bestaande alfadeelwaarde, zodat gedeeltelijk transparante pixels proportioneel verschillend blijven. addAlphaReplaceEffect wijst in plaats daarvan één alfadeelwaarde toe aan alle pixels. addAlphaBiLevelEffect converteert alfa naar twee niveaus op basis van een drempel.

const aspose = {};
aspose.slides = require("aspose.slides.via.java");

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);

    let image;
    const sourceImage = aspose.slides.Images.fromFile("photo.png");
    try {
        image = presentation.getImages().addImage(sourceImage);
    } finally {
        sourceImage.dispose();
    }

    const blurredFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 20, 20, 200, 140, image);
    const blur = blurredFrame.getPictureFormat().getPicture().getImageTransform().addBlurEffect(4.5, true);
    blur.setRadius(5);

    const transparentFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 240, 20, 200, 140, image);
    const alphaModulate = transparentFrame.getPictureFormat().getPicture().getImageTransform().addAlphaModulateFixedEffect(65);
    alphaModulate.setAmount(60);

    const uniformAlphaFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 20, 180, 200, 140, image);
    uniformAlphaFrame.getPictureFormat().getPicture().getImageTransform().addAlphaReplaceEffect(55);

    const binaryAlphaFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 240, 180, 200, 140, image);
    const alphaBiLevel = binaryAlphaFrame.getPictureFormat().getPicture().getImageTransform().addAlphaBiLevelEffect(50);
    alphaBiLevel.setThreshold(45);
    binaryAlphaFrame.getPictureFormat().getPicture().getImageTransform().addAlphaInverseEffect();

    presentation.save("blur-and-alpha-effects.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Andere alfa‑operaties zonder parameters omvatten addAlphaCeilingEffect, die elke niet‑nul alfa volledig ondoorzichtig maakt; addAlphaFloorEffect, die elke alfa onder 100 % volledig transparant maakt; en addAlphaInverseEffect, die alfa wijzigt naar 100% - alpha.

Bouw een geordende effectketen

Elke add...Effect‑methode voegt een nieuwe operatie toe aan het einde van de verzameling. De renderer gebruikt de verzameling als een geordende pijplijn: de uitvoer van operatie 0 wordt de invoer van operatie 1, enzovoort. Daardoor kan dezelfde reeks operaties in een andere volgorde een ander beeld opleveren.

Zo verwijdert grijswaarden gevolgd door tint eerst chromatische informatie en kleurt vervolgens het luminantie‑resultaat opnieuw. Tint gevolgd door grijswaarden verwijdert de tint opnieuw. Evenzo kan alfabewerking de alfabewerkingen van eerdere stappen overschrijven, terwijl alfabemodulatie hun relatieve verschillen behoudt.

Het volgende voorbeeld bouwt een keten van vier operaties, slaat deze op als PPTX, opent de presentatie opnieuw, controleert zowel de operatietypen als hun volgorde, en rendert het heropende resultaat:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);

    let image;
    const sourceImage = aspose.slides.Images.fromFile("photo.png");
    try {
        image = presentation.getImages().addImage(sourceImage);
    } finally {
        sourceImage.dispose();
    }

    const pictureFrame = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 50, 400, 260, image);
    const imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
    imageTransform.addGrayScaleEffect();
    imageTransform.addTintEffect(220, 25);
    imageTransform.addBlurEffect(2.5, false);
    imageTransform.addAlphaModulateFixedEffect(80);

    presentation.save("image-transform-chain.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

const reopenedPresentation = new aspose.slides.Presentation("image-transform-chain.pptx");
try {
    const reopenedShape = reopenedPresentation.getSlides().get_Item(0).getShapes().get_Item(0);

    if (java.instanceOf(reopenedShape, "com.aspose.slides.IPictureFrame")) {
        const reopenedTransform = reopenedShape.getPictureFormat().getPicture().getImageTransform();
        const orderIsPreserved = reopenedTransform.size() === 4 &&
            java.instanceOf(reopenedTransform.get_Item(0), "com.aspose.slides.IGrayScale") &&
            java.instanceOf(reopenedTransform.get_Item(1), "com.aspose.slides.ITint") &&
            java.instanceOf(reopenedTransform.get_Item(2), "com.aspose.slides.IBlur") &&
            java.instanceOf(reopenedTransform.get_Item(3), "com.aspose.slides.IAlphaModulateFixed");
        console.log(orderIsPreserved ? "The effect chain was preserved." : "The effect chain changed during the round trip.");

        const renderedSlide = reopenedPresentation.getSlides().get_Item(0).getImage();
        try {
            renderedSlide.save("reopened-effect-chain.png", aspose.slides.ImageFormat.Png);
        } finally {
            renderedSlide.dispose();
        }
    } else {
        console.log("The reopened shape is not a picture frame.");
    }
} finally {
    reopenedPresentation.dispose();
}

De collectie legt geen compatibiliteitsmatrix op die kleur‑, alfa‑ en vervagingsoperaties tot afzonderlijke ketens beperkt. Ze kunnen gecombineerd worden, maar combinaties zijn niet altijd nuttig. Een vaste kleurvervanging verwijdert RGB‑variatie die door eerdere kleureffecten is gecreëerd; grijswaarden na duotone verwijdert de twee geselecteerde kleuren; en alfa‑ceiling, floor, vervanging of bi‑level operaties kunnen alfabetaalde details die eerder zijn gemaakt weggooien. Bouw de keten volgens de gewenste pixel‑verwerkingsvolgorde in plaats van de items te behandelen als ongeordende formatterings‑vlaggen.

Inspecteer bewerkbare en effectieve waarden

Een bewerkbare operatie is het object dat is opgeslagen in Picture.getImageTransform. Afhankelijk van het effect kan het rechtstreeks schrijfbare leden blootstellen. Bijvoorbeeld, Blur stelt schrijfbare radius‑ en grow‑waarden bloot, AlphaModulateFixed stelt een schrijfbare amount bloot, en AlphaBiLevel stelt een schrijfbare threshold bloot. Kleureffecten zoals Duotone exposen mutabele ColorFormat objecten.

Sommige operaties, waaronder BrightnessContrast, HSL, Tint en AlphaReplace, exposen hun creatiescalairen niet als schrijfbare eigenschappen. Om die instellingen te wijzigen, verwijder je de operatie en voeg je een vervanging toe op de vereiste positie.

Effectieve gegevens die door getEffective() worden geretourneerd, zijn berekend en alleen‑lezen. Ze zijn nuttig om themagebonden kleuren op te lossen en de genormaliseerde waarden te lezen die de renderer gebruikt, maar vormen geen extra bewerkingsoppervlak. Het volgende voorbeeld doorloopt de keten en inspecteert effectieve waarden waar de bijbehorende API ze aanbiedt:

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const presentation = new aspose.slides.Presentation("image-transform-chain.pptx");
try {
    const shapes = presentation.getSlides().get_Item(0).getShapes();
    let pictureFrame = null;

    for (let index = 0; index < shapes.size(); index++) {
        const shape = shapes.get_Item(index);
        if (java.instanceOf(shape, "com.aspose.slides.IPictureFrame")) {
            pictureFrame = shape;
            break;
        }
    }

    if (pictureFrame != null) {
        const imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();

        for (let index = 0; index < imageTransform.size(); index++) {
            const operation = imageTransform.get_Item(index);
            console.log(index + ": " + operation.getClass().getSimpleName());

            if (java.instanceOf(operation, "com.aspose.slides.IBrightnessContrast")) {
                const data = operation.getEffective();
                console.log("  Brightness: " + data.getBrightness());
                console.log("  Contrast: " + data.getContrast());
            } else if (java.instanceOf(operation, "com.aspose.slides.ILuminance")) {
                const data = operation.getEffective();
                console.log("  Brightness: " + data.getBrightness());
                console.log("  Contrast: " + data.getContrast());
            } else if (java.instanceOf(operation, "com.aspose.slides.IDuotone")) {
                const data = operation.getEffective();
                console.log("  Dark color: " + data.getColor1());
                console.log("  Light color: " + data.getColor2());
            } else if (java.instanceOf(operation, "com.aspose.slides.IColorReplace")) {
                const data = operation.getEffective();
                console.log("  Replacement color: " + data.getColor());
            } else if (java.instanceOf(operation, "com.aspose.slides.IHSL")) {
                const data = operation.getEffective();
                console.log("  HSL: " + data.getHue() + ", " + data.getSaturation() + ", " + data.getLuminance());
            } else if (java.instanceOf(operation, "com.aspose.slides.ITint")) {
                const data = operation.getEffective();
                console.log("  Tint: " + data.getHue() + ", " + data.getAmount());
            } else if (java.instanceOf(operation, "com.aspose.slides.IBlur")) {
                const data = operation.getEffective();
                console.log("  Blur radius: " + data.getRadius() + " pt");
            } else if (java.instanceOf(operation, "com.aspose.slides.IAlphaModulateFixed")) {
                const data = operation.getEffective();
                console.log("  Alpha amount: " + data.getAmount() + "%");
            } else if (java.instanceOf(operation, "com.aspose.slides.IAlphaReplace")) {
                const data = operation.getEffective();
                console.log("  Replacement alpha: " + data.getAlpha() + "%");
            } else if (java.instanceOf(operation, "com.aspose.slides.IAlphaBiLevel")) {
                const data = operation.getEffective();
                console.log("  Alpha threshold: " + data.getThreshold() + "%");
            }
        }
    }
} finally {
    presentation.dispose();
}

Parameter‑vrije effecten zoals grijswaarden, alfa‑ceiling en alfa‑inverse hebben nog steeds een effectieve‑databron, maar er zijn geen scalaire instellingen om af te drukken. Hun aanwezigheid en positie in de verzameling zijn de belangrijke informatie.

Verwijder of maak afbeeldings‑transformaties leeg

Gebruik ImageTransformOperationCollection.removeAt om één operatie te verwijderen op basis van index. Omdat indexen verschuiven na een verwijdering, zoek eerst het doel en verwijder het daarna na het doorlopen. Gebruik ImageTransformOperationCollection.clear om de gehele keten te verwijderen.

const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const presentation = new aspose.slides.Presentation("image-transform-chain.pptx");
try {
    const shapes = presentation.getSlides().get_Item(0).getShapes();
    let pictureFrame = null;

    for (let index = 0; index < shapes.size(); index++) {
        const shape = shapes.get_Item(index);
        if (java.instanceOf(shape, "com.aspose.slides.IPictureFrame")) {
            pictureFrame = shape;
            break;
        }
    }

    if (pictureFrame != null) {
        const imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
        let blurIndex = -1;

        for (let index = 0; index < imageTransform.size(); index++) {
            if (java.instanceOf(imageTransform.get_Item(index), "com.aspose.slides.IBlur")) {
                blurIndex = index;
                break;
            }
        }

        if (blurIndex >= 0) {
            imageTransform.removeAt(blurIndex);
            console.log("The blur operation was removed.");
        }

        imageTransform.clear();
        console.log("Remaining operations: " + imageTransform.size());
        presentation.save("image-transforms-cleared.pptx", aspose.slides.SaveFormat.Pptx);
    }
} finally {
    presentation.dispose();
}

Het verwijderen of leegmaken van transformaties wijzigt alleen de afbeelding‑formatterings­eigenschappen. Het verwijdert, recomprimeert of wijzigt op andere wijze niet de hergebruikte PPImage resource.

Houd rekening met presentatie‑formaten en export‑doelen

Afbeeldings‑transformaties ontstaan in DrawingML, dus PPTX is het voorkeurs‑bewerkbare formaat voor effectketens. Zelfs met PPTX heeft niet elke operatie dezelfde portabiliteit:

  • Standaard DrawingML‑operaties zoals luminantie, grijswaarden, duotone, tint, HSL, vervaging en gangbare alfa‑operaties hebben de grootste kans om een PPTX‑round‑trip te overleven. Open het gegenereerde bestand altijd opnieuw en inspecteer de verzameling wanneer behoud een vereiste is.
  • BrightnessContrast is een Office 2010‑extensie in plaats van de standaard DrawingML luminantie‑operatie. Het kan voor in‑memory rendering worden gebruikt, maar er is geen garantie dat het na opslaan en heropenen van PPTX bewerkbaar blijft als BrightnessContrast operatie. Geef de voorkeur aan addLuminanceEffect voor blijvende helderheids‑ en contrast‑aanpassingen.
  • Het binaire PPT‑formaat bestaat vóór het volledige DrawingML‑effectmodel. Opslaan naar PPT kan niet‑ondersteunde operaties weglaten, een keten reduceren tot een ondersteunde subset, of een benadering van het uiterlijk geven. Gebruik PPT niet als verificatie‑formaat voor een complexe bewerkbare keten.
  • Renderen naar PNG, JPEG, TIFF, PDF, SVG, HTML of andere visuele uitvoer past de ondersteunde keten toe op het gerenderde uiterlijk. Die uitvoer bevat geen bewerkbare ImageTransformOperationCollection; rasterformaten flattenen het resultaat naar pixels, en document‑/vector‑exports slaan hun eigen renderrepresentatie op.
  • Effecten maken een gelinkte afbeelding niet zelf‑voorzienend. Het renderen van een gelinkte afbeelding blijft afhankelijk van de beschikbaarheid van de gelinkte bron wanneer de presentatie wordt geladen.

Verschillende presentatie‑consumenten kunnen randgevallen anders renderen, vooral wanneer meerdere alfa‑ of kleur‑kwantisatie‑operaties gecombineerd worden. Voor kritische uitvoer, test zowel de bewerkbare round‑trip als het uiteindelijke export‑formaat met dezelfde Aspose.Slides‑versie die in productie wordt gebruikt.

FAQ

Wijzigen afbeelding‑transformatie‑effecten de ingesloten afbeeldingsdata?

Nee. De operaties behoren tot de Picture die door de opvul‑afbeelding wordt gebruikt. De onderliggende PPImage bytes blijven ongewijzigd.

Delen twee afbeelding‑kaders die dezelfde afbeelding hergebruiken hun effecten?

Nee. Het hergebruiken van een PPImage vermijdt duplicatie van afbeeldingsdata, maar elk afbeelding‑kader heeft normaal gezien een eigen Picture en eigen beeldtransformatie‑verzameling.

Kunnen kleur‑, vervagings‑ en alfa‑effecten gecombineerd worden?

Ja. De collectie accepteert ze in één geordende keten. Houd rekening met wat elke operatie doet met de uitvoer van de vorige, want vervang‑ en drempeloperaties kunnen eerdere kleur‑ of alfabeddetails weggooien.

Waarom zijn effectieve waarden alleen‑lezen?

Effectieve data representeert berekende waarden die voor rendering worden gebruikt, inclusief opgeloste kleuren. Bewerk de operatie die in de transformatie‑verzameling is opgeslagen waar schrijfbare leden bestaan; verwijder anders de operatie en voeg een vervanging toe met nieuwe creatie‑parameters.

Welk formaat moet ik gebruiken om een transformatie‑keten te behouden?

Gebruik PPTX en verifieer het bestand door het opnieuw te openen. Het legacy‑PPT‑formaat kan het volledige DrawingML‑effectmodel niet vertegenwoordigen, en gerenderde export‑formaten behouden alleen het uiterlijk, niet de bewerkbare transformatie‑operaties.