JavaScript ile Sunumlarda Görüntü Dönüşüm Efektlerini Yönetme

Genel Bakış

Aspose.Slides, resim ayarlamalarını sıralı bir görüntü dönüşüm işlemleri koleksiyonu olarak temsil eder. Bir resim çerçevesi için, çerçevenin Picture nesnesiyle başlayın ve Picture.getImageTransform yöntemine erişin. Döndürülen ImageTransformOperationCollection size orijinal görüntü baytlarını yeniden yazmadan efekt ekleme, listeleme, inceleme, kaldırma ve temizleme imkanı verir.

Bu makale, parlaklık ve kontrast, renk dönüşümleri, bulanıklık, şeffaflık, sıralı efekt zincirleri, etkili değerler, kaldırma ve PPTX çift yönlü doğrulama için tam bir iş akışı gösterir.

Efekt Sahipliğini ve Görüntü Yeniden Kullanımını Anlama

Bir görüntü kaynağı ve onu gösteren resim farklı nesnelerdir:

  • PPImage sunumun sahip olduğu kaynak görüntü verilerini depolar veya referans verir.
  • Picture bir resim doldurmasına aittir ve bir görüntü kaynağına başvururken görüntü dönüşüm koleksiyonunu saklar.
  • PictureFrame ilgili resim doldurmasını, geometrisini, kırpma ayarlarını ve diğer çerçeve‑seviyesi biçimlendirmeyi sahipleyen slayt şeklidir.

Bu nedenle, görüntü dönüşüm işlemleri PPImage içindeki baytları değiştirmez. Aynı PPImage birden fazla kez ShapeCollection.addPictureFrame metoduna gönderildiğinde, her yeni resim çerçevesi kendi Picture ve kendi dönüşüm koleksiyonuna sahip olur. Bir çerçeveye gri tonlama uygulamak diğer çerçeveleri gri tonlamaz, çünkü hepsi aynı gömülü görüntü kaynağını kullanır.

Aynı Picture.getImageTransform modeli, şekil ya da slayt arka planı gibi diğer resim doldurmaları tarafından da kullanılır. Aşağıdaki örnekler yalnızca resim çerçevelerine odaklanır.

Geçerli Parametre Aralıklarını ve Birimleri Kullanma

Gösterilen yöntemler aşağıdaki anlamsal aralıkları ve birimleri kullanır. Belirli bir kütüphane sürümü hemen her geçersiz değeri reddetmese bile bu aralıklarda kalın; hedef sunum biçimi kaydetme sırasında veya PowerPoint dosyayı açtığında geçersiz verileri normalleştirebilir, atabilir veya reddedebilir.

İşlem Parametreler Geçerli aralık ve birim
addBrightnessContrastEffect brightness, contrast -100 ile 100 arasında, yüzde; 0 bileşeni değiştirmez.
addGrayScaleEffect Yok Sayısal parametre yoktur. Alfa değişmez.
addDuotoneEffect color1, color2 Koyu ve açık pikseller için iki renk. java.awt.Color içinde RGB ve alfa kanalları 0255 aralığındadır.
addTintEffect hue, amount Açık renk 0 (dahil) ile 360 (hariç) derece; miktar -100100 yüzde.
addHSLEffect hue, saturation, luminance Açık renk 0360 derece; doygunluk ve parlaklık -100100 yüzde.
addColorReplaceEffect color Değiştirme rengi kanallar 0255 aralığındadır. Mevcut alfa değerleri değişmez.
addBlurEffect radius, grow Yarıçap negatif olmayan ve puan cinsindendir; grow bulanık içeriğin orijinal sınırların dışına çıkıp çıkmayacağını kontrol eden Boolean’dır.
addAlphaModulateFixedEffect amount Negatif olmayan yüzde. Normal opaklık ölçeklemesi için 0100 kullanın: 0 tamamen şeffaf, 100 mevcut alfasını korur.
addAlphaReplaceEffect alpha 0100 yüzde opaklık.
addAlphaBiLevelEffect threshold 0100 yüzde alfa eşiği. Bu değerin altı şeffaf, eşit veya üstü opaktır.

Sabit alfa modülasyonu için şeffaflık ve opaklık karşılıklıdır. Örneğin, %35 şeffaflık alfa modülasyonu %65 değerine eşittir.

Parlaklık ve Kontrast Uygulama

ImageTransformOperationCollection.addBrightnessContrastEffect bir BrightnessContrast işlemi döndürür. İşlem oluşturulurken skaler ayarları sağlanır. BrightnessContrast.getEffective yalnızca okunabilen, hesaplanmış değerleri verir; bunlar incelenebilir veya kaydedilebilir.

Aşağıdaki örnek parlaklığı %15, kontrastı %20 artırır ve gömülü görüntüyü değiştirmeden bir ön izleme oluşturur:

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 bir Office 2010 resim‑efekti uzantısıdır ve standart DrawingML parlaklık efekti kadar taşınabilir değildir. Parlaklık ve kontrastın PPTX çift yönlü işleminden sonra da düzenlenebilir kalmasını istiyorsanız, ImageTransformOperationCollection.addLuminanceEffect kullanın ve dosyayı yeniden açtıktan sonra sonucu doğrulayın. Biçim sınırlamaları bölümü bu farkı daha ayrıntılı açıklar.

Renk Dönüşümlerini Uygulama

Renk efektleri, aynı görüntü kaynağını kullanan farklı resim çerçevelerine bağımsız olarak uygulanabilir. Aşağıdaki örnek beş çerçeve oluşturur ve sırasıyla gri tonlama, duotone, renk tonu, HSL ayarı ve renk değiştirme uygular.

Duotone iki bağımsız olarak düzenlenebilir renk parametresi içerir: color1 koyu pikselleri, color2 ise açık pikselleri eşler. Bu, ayarları tek bir skaler değerden daha karmaşık olan bir efekt örneği olarak yararlıdır.

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 her pikselin rengini sabit bir renk ile değiştirirken alfasını korur. Bu, kaynak rengi başka bir renge eşleyen ve hem kaynak hem hedef renk biçimlerini gösteren addColorChangeEffect metodundan farklıdır.

Bulanıklık, Şeffaflık ve Alfa Efektleri Ekleme

addBlurEffect tüm renk kanallarını, alfanın da dahil, etkiler. Bulanık kenarın orijinal resim sınırlarının dışına çıkabileceği durumlarda grow değerini true yapın.

Tekdüze şeffaflık için addAlphaModulateFixedEffect kullanın. Bu, mevcut alfa değerlerini çarpar; böylece kısmı şeffaf pikseller orantılı olarak farklı kalır. addAlphaReplaceEffect ise tüm piksellere aynı alfa değerini atar. addAlphaBiLevelEffect alfa değerini bir eşik temelinde iki seviyeye dönüştürür.

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

Parametresiz diğer alfa operasyonları arasında addAlphaCeilingEffect (her sıfır olmayan alfa %100 opak olur), addAlphaFloorEffect (her alfa %100’ün altında %0 şeffaf olur) ve addAlphaInverseEffect (alfa 100% - alpha olur) yer alır.

Sıralı Bir Efekt Zinciri Oluşturma

Her add...Effect metodu işlemi koleksiyonun sonuna ekler. İşleyici bu koleksiyonu sıralı bir boru hattı gibi kullanır: işlem 0’ın çıktısı işlem 1’in girdisi olur ve böyle devam eder. Dolayısıyla aynı işlemler farklı bir sırada farklı bir görüntü üretebilir.

Örneğin, gri tonlama ardından renk tonu uygulamak önce kromatik bilgiyi kaldırıp ardından parlaklık sonucunu yeniden renklendirir. Renk tonu ardından gri tonlama eski renk tonunu ortadan kaldırır. Benzer şekilde, alfa değiştirme daha önceki işlemler tarafından hesaplanan alfa değerlerini geçersiz kılar, alfa modülasyonu ise bu değerlerin göreli farklarını korur.

Aşağıdaki örnek dört işlemden oluşan bir zincir kurar, PPTX olarak kaydeder, sunumu yeniden açar, işlem tiplerini ve sırasını kontrol eder ve yeniden açılan sonucu render eder:

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

Koleksiyon, renk, alfa ve bulanıklaştırma işlemlerini ayrı zincirlere sınırlayan bir uyumluluk matrisi dayatmaz. Kombinasyonlar yapılabilir, ancak her zaman anlamlı olmayabilir. Sabit bir renk değişimi, önceki renk efektlerinin oluşturduğu RGB varyasyonlarını yok eder; duotone’dan sonra gri tonlama iki seçili rengi kaldırır; alfa tavan, taban, değiştirme veya çift‑seviyeli işlemler, daha önce yaratılan alfa detayını silebilir. Zinciri, istenen piksel işleme sırasına göre kurun; öğeleri sırasız biçimleme bayrakları gibi düşünmeyin.

Düzenlenebilir ve Etkili Değerleri İnceleme

Düzenlenebilir bir işlem, Picture.getImageTransform içinde depolanan nesnedir. Efekte bağlı olarak doğrudan yazılabilir üyeler sunabilir. Örneğin, Blur radius ve grow değerlerini, AlphaModulateFixed amount değerini, AlphaBiLevel threshold değerini yazılabilir olarak gösterir. Duotone gibi renk efektleri, değiştirilebilir ColorFormat nesnelerini açığa çıkarır.

BrightnessContrast, HSL, Tint ve AlphaReplace gibi bazı işlemler, oluşturma skalerlerini yazılabilir özellik olarak sunmaz. Bu ayarları değiştirmek için işlemi kaldırıp istenen konumda yeni bir işlem ekleyin.

getEffective() tarafından döndürülen etkili veri hesaplanmış ve salt‑okunandır. Tema bağımlı renklerin çözülmesinde ve renderlayıcının kullandığı normalleştirilmiş değerlerin okunmasında faydalıdır, ancak başka bir düzenleme yüzeyi değildir. Aşağıdaki örnek zinciri enumerate eder ve ilgili API etkili değer sağladığında bu değerleri inceler:

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

Gri tonlama, alfa tavan ve alfa tersine çevirme gibi parametresiz efektlerin de bir etkili‑veri nesnesi vardır, ancak yazdırılacak skaler ayarları yoktur. Koleksiyondaki varlıkları ve konumları önemli bilgidir.

Görüntü Dönüşümlerini Kaldırma veya Temizleme

Bir işlemi indeksle kaldırmak için ImageTransformOperationCollection.removeAt kullanın. Kaldırma sonrası indeksler kayar; bu yüzden önce hedefi bulup enumerate ettikten sonra kaldırın. Tüm zinciri kaldırmak için ImageTransformOperationCollection.clear kullanın.

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

Dönüşümleri kaldırmak veya temizlemek yalnızca resim biçimlendirmesini değiştirir. Yeniden kullanılan PPImage kaynağını silmez, sıkıştırmaz veya başka bir şekilde etkilemez.

Sunum Biçimlerini ve Dışa Aktarım Hedeflerini Düşünme

Görüntü dönüşümleri DrawingML’den gelir, bu yüzden PPTX etkili zincirler için tercih edilen düzenlenebilir formattır. PPTX olsa bile, her işlem aynı taşınabilirliğe sahip değildir:

  • Luminans, gri tonlama, duotone, renk tonu, HSL, bulanıklaştırma ve yaygın alfa işlemleri gibi standart DrawingML işlemleri PPTX çift yönlü işleminde en yüksek koruma şansına sahiptir. Kalıcı olma gereksinimi varsa her zaman oluşturulan dosyayı yeniden açıp koleksiyonu inceleyin.
  • BrightnessContrast bir Office 2010 uzantısıdır, standart DrawingML luminans işlemi değildir. Bellek içi renderlama için kullanılabilir, ancak PPTX kaydedilip yeniden açıldıktan sonra düzenlenebilir bir [BrightnessContrast] işlemi olarak kalması garanti değildir. Kalıcı parlaklık ve kontrast ayarları için addLuminanceEffect tercih edin.
  • İkili PPT biçimi tam DrawingML efekt modelinden önce ortaya çıkmıştır. PPT’ye kaydetmek desteklenmeyen işlemleri atabilir, zinciri desteklenen bir alt kümeye indirebilir veya görünümü yaklaştırabilir. Karmaşık düzenlenebilir zincirler için PPT’yi doğrulama biçimi olarak kullanmayın.
  • PNG, JPEG, TIFF, PDF, SVG, HTML gibi görsel çıktılar desteklenen zinciri renderlanmış görünüme uygular. Bu çıktılar bir [ImageTransformOperationCollection] içermez; raster biçimler sonucu piksellere dönüştürür, belge/vektör dışa aktarımları ise kendi render temsillerini saklar.
  • Efektler, bağlanan bir görüntünün bağımsız hâle gelmesini sağlamaz. Bağlı bir resim renderlandığında sunum yüklendiğinde bağlantılı kaynağın mevcut olması gerekir.

Farklı sunum tüketicileri, özellikle birkaç alfa veya renk‑kuantizasyon işlemi bir arada kullanıldığında kenar durumlarını farklı yorumlayabilir. Kritik çıktılar için aynı Aspose.Slides sürümüyle hem düzenlenebilir çift yönlü işlemi hem de son dışa aktarım biçimini test edin.

SSS

Görüntü dönüşüm efektleri gömülü görüntü verilerini değiştirir mi?

Hayır. İşlemler, resim doldurması tarafından kullanılan [Picture] nesnesine aittir. Altındaki [PPImage] baytları değişmeden kalır.

Aynı görüntüyü yeniden kullanan iki resim çerçevesi etkilerini paylaşır mı?

Hayır. [PPImage] yeniden kullanmak veri çoğaltmayı önler, ancak her resim çerçevesi genellikle ayrı bir [Picture] ve ayrı bir görüntü dönüşüm koleksiyonuna sahiptir.

Renk, bulanıklık ve alfa efektleri birleştirilebilir mi?

Evet. Koleksiyon bu efektleri tek bir sıralı zincirde kabul eder. Her işlem bir öncekinin çıktısını nasıl etkilediğini dikkate alın; değiştirme ve eşik işlemleri önceki renk veya alfa detayını silebilir.

Etkili değerler neden sadece okunabilir?

Etkili veri, renderlama için kullanılan hesaplanmış değerleri ve çözülmüş renkleri temsil eder. Yazılabilir üyeleri olan işlemi koleksiyonda düzenleyin; aksi takdirde işlemi kaldırıp yeni oluşturma parametreleriyle bir yenisini ekleyin.

Bir dönüşüm zincirini korumak için hangi formatı kullanmalıyım?

PPTX kullanın ve dosyayı yeniden açarak doğrulayın. Eski PPT tam DrawingML efekt modelini temsil edemez; render çıktıları ise sadece görünümü saklar, düzenlenebilir dönüşüm işlemlerini içermez.