Sunumlarda Java ile Görüntü Dönüştürme Efektlerini Yönetin

Genel Bakış

Aspose.Slides, resim ayarlamalarını görüntü dönüştürme işlemlerinin sıralı bir koleksiyonu olarak temsil eder. Bir resim çerçevesi için, çerçevenin ISlidesPicture ile başlayın ve ISlidesPicture.getImageTransform zaman erişin. Döndürülen IImageTransformOperationCollection ekleme, yineleme, inceleme, kaldırma ve etkileri temizleme imkanı sağlar; orijinal resim baytlarını yeniden yazmaz.

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

Etki Sahipliğini ve Görüntü Yeniden Kullanımını Anlayın

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

  • IPPImage sunumun sahip olduğu kaynak resim verilerini saklar veya referans verir.
  • ISlidesPicture bir resim doldurmanın parçasıdır ve bir görüntü kaynağına başvurur, aynı zamanda görüntü dönüştürme koleksiyonunu saklar.
  • IPictureFrame ilgili resim doldurmayı, geometrileri, kırpma ayarlarını ve diğer çerçeve düzeyindeki biçimlendirmeleri sahip olan slayt şeklidir.

Bu nedenle, görüntü dönüştürme işlemleri IPPImage baytlarını değiştirmez. Aynı IPPImage birden fazla kez IShapeCollection.addPictureFrame yöntemine geçirildiğinde, her yeni resim çerçevesi kendi ISlidesPicture ve kendi dönüştürme koleksiyonunu alır. Bir çerçeveye gri tonlama uygulamak diğer çerçeveleri gri tonlamaz; tüm çerçeveler aynı gömülü görüntü kaynağını kullanır ancak her biri ayrı bir ISlidesPicture nesnesine sahiptir.

Aynı ISlidesPicture.getImageTransform modeli, şekil veya slayt arka planı gibi diğer resim doldurmaları tarafından da kullanılır. Aşağıdaki örnekler resim çerçevelerine odaklanmaktadır.

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

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ıkta kalın; hedef sunum formatı 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 Ton 0 dahil, 360 hariç derece cinsinden; miktar -100 ile 100 arasında, yüzde.
addHSLEffect hue, saturation, luminance Ton 0 dahil, 360 hariç derece; doygunluk ve parlaklık -100 ile 100 arasında, yüzde.
addColorReplaceEffect color Yerine konulan renk, kanal değerleri 0255 aralığındadır. Mevcut alfa değerleri değişmez.
addBlurEffect radius, grow Yarıçap negatif olamaz 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çeği için 0100 kullanın: 0 tamamen şeffaf, 100 mevcut alfabeyi korur.
addAlphaReplaceEffect alpha 0100 arasında, yüzde opaklık.
addAlphaBiLevelEffect threshold 0100 arasında, yüzde alfa eşik değeri. Bu değerin altı şeffaf, eşik ve üzeri opaktır.

Sabit alfa modülasyonu için şeffaflık ve opaklık tamamlayıcıdır. Örneğin, %35 şeffaflık %65 alfa modülasyon miktarına karşılık gelir.

Parlaklık ve Kontrast Uygula

IImageTransformOperationCollection.addBrightnessContrastEffect bir IBrightnessContrast işlemi döndürür. İşlem oluşturulurken skaler ayarları sağlanır. IBrightnessContrast.getEffective hesaplanmış yalnızca‑okunur değerleri verir; bu değerler incelenebilir veya kaydedilebilir.

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

import com.aspose.slides.*;
import java.nio.file.Files;
import java.nio.file.Paths;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    byte[] imageData = Files.readAllBytes(Paths.get("photo.png"));
    IPPImage image = presentation.getImages().addImage(imageData);
    IPictureFrame pictureFrame = slide.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 400, 260, image);

    IImageTransformOperationCollection imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
    IBrightnessContrast brightnessContrast = imageTransform.addBrightnessContrastEffect(15f, 20f);

    IBrightnessContrastEffectiveData effectiveValues = brightnessContrast.getEffective();
    System.out.println("Brightness: " + effectiveValues.getBrightness() + "%");
    System.out.println("Contrast: " + effectiveValues.getContrast() + "%");

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

BrightnessContrast bir Office 2010 resim‑etki uzantısıdır ve standart DrawingML parlaklık etkisine göre daha az taşınabilirdir. Parlaklık ve kontrastın PPTX çift yönlü işleminden sonra düzenlenebilir kalması gerekiyorsa, IImageTransformOperationCollection.addLuminanceEffect kullanın ve dosyayı yeniden açtıktan sonra sonucu doğrulayın. Biçim sınırlamaları bölümü bu ayrımı ayrıntılı olarak açıklar.

Renk Dönüşümlerini Uygula

Renk etkileri, 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 gri tonlama, duotone, tonlama, HSL ayarı ve renk değiştirme uygular.

IDuotone 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 bir etki örneği olduğundan yararlıdır.

import com.aspose.slides.*;
import java.awt.Color;
import java.nio.file.Files;
import java.nio.file.Paths;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    byte[] imageData = Files.readAllBytes(Paths.get("photo.png"));
    IPPImage image = presentation.getImages().addImage(imageData);

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

    IPictureFrame duotoneFrame = slide.getShapes().addPictureFrame(ShapeType.Rectangle, 220, 20, 180, 120, image);
    IDuotone duotone = duotoneFrame.getPictureFormat().getPicture().getImageTransform().addDuotoneEffect();
    duotone.getColor1().setColor(new Color(0, 0, 128));
    duotone.getColor2().setColor(new Color(255, 215, 0));

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

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

    IPictureFrame replacementFrame = slide.getShapes().addPictureFrame(ShapeType.Rectangle, 320, 170, 180, 120, image);
    IColorReplace colorReplacement = replacementFrame.getPictureFormat().getPicture().getImageTransform().addColorReplaceEffect();
    colorReplacement.getColor().setColor(new Color(100, 149, 237));

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

addColorReplaceEffect her pikselin rengini sabit bir renk ile değiştirir, alfabayı korur. Bu, bir kaynak rengi başka bir renge eşleyen ve hem kaynak hem hedef renk biçimlerini ortaya çıkaran addColorChangeEffect yönteminden farklıdır.

Bulanıklaştırma, Şeffaflık ve Alfa Etkileri Ekle

addBlurEffect tüm renk kanallarını, alfabı da dahil, etkiler. Bulanık kenarın orijinal resim sınırlarını aşabileceği durumlarda grow değerini true yapın.

Tek tip şeffaflık için addAlphaModulateFixedEffect kullanın. Mevcut her alfa değerini çarpar, böylece kısmen şeffaf pikseller orantılı olarak farklı kalır. addAlphaReplaceEffect ise tüm piksellere tek bir alfa değeri atar. addAlphaBiLevelEffect alfa değerini bir eşik temelinde iki seviyeye dönüştürür.

import com.aspose.slides.*;
import java.nio.file.Files;
import java.nio.file.Paths;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    byte[] imageData = Files.readAllBytes(Paths.get("photo.png"));
    IPPImage image = presentation.getImages().addImage(imageData);

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

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

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

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

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

Parametresiz diğer alfa işlemleri şunlardır: addAlphaCeilingEffect tüm sıfır olmayan alfabı tamamen opak yapar; addAlphaFloorEffect %100 altında kalan alfabı tamamen şeffaf yapar; ve addAlphaInverseEffect alfabı 100% - alfa olarak değiştirir.

Sıralı Bir Etki Zinciri Oluştur

Her add...Effect yöntemi yeni bir işlemi koleksiyonun sonuna ekler. Çizer, koleksiyonu sıralı bir boru hattı olarak kullanır: işlem 0’ın çıktısı işlem 1’in girdisi olur, vs. Dolayısıyla aynı işlemler farklı bir sırada farklı bir görüntü üretebilir.

Örneğin, önce gri tonlama ardından tonlama uygulamak önce renk bilgisini kaldırır, sonra parlaklık sonucunu yeniden renklendirir. Tonlama ardından gri tonlama ise tonlamayı tekrar ortadan kaldırır. Benzer şekilde, alfa değiştirme daha önceki işlemler tarafından hesaplanan alfa değerlerini geçersiz kılabilir, 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, hem işlem türlerini hem de sırasını kontrol eder ve yeniden açılan sonucu oluşturur:

import com.aspose.slides.*;
import java.nio.file.Files;
import java.nio.file.Paths;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    byte[] imageData = Files.readAllBytes(Paths.get("photo.png"));
    IPPImage image = presentation.getImages().addImage(imageData);
    IPictureFrame pictureFrame = slide.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 400, 260, image);

    IImageTransformOperationCollection imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
    imageTransform.addGrayScaleEffect();
    imageTransform.addTintEffect(220f, 25f);
    imageTransform.addBlurEffect(2.5, false);
    imageTransform.addAlphaModulateFixedEffect(80f);

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

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

    if (reopenedShape instanceof IPictureFrame) {
        IPictureFrame reopenedFrame = (IPictureFrame) reopenedShape;
        IImageTransformOperationCollection reopenedTransform = reopenedFrame.getPictureFormat().getPicture().getImageTransform();
        boolean orderIsPreserved = reopenedTransform.size() == 4 && 
                reopenedTransform.get_Item(0) instanceof IGrayScale && 
                reopenedTransform.get_Item(1) instanceof ITint && 
                reopenedTransform.get_Item(2) instanceof IBlur && 
                reopenedTransform.get_Item(3) instanceof IAlphaModulateFixed;
        System.out.println(orderIsPreserved ? "The effect chain was preserved." : "The effect chain changed during the round trip.");

        IImage renderedSlide = reopenedPresentation.getSlides().get_Item(0).getImage();
        try {
            renderedSlide.save("reopened-effect-chain.png", ImageFormat.Png);
        } finally {
            renderedSlide.dispose();
        }
    } else {
        System.out.println("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. Birlikte kullanılabilirler, ancak kombinasyonlar her zaman yararlı değildir. Sabit bir renk değiştirme, önceki renk etkileriyle üretilen RGB varyasyonlarını kaldırır; duotoneden sonra gelen gri tonlama iki seçili rengi ortadan kaldırır; ve alfa tavan, taban, değiştirme veya iki‑seviye işlemleri önceki alfa detayını yok edebilir. Zinciri, istenen piksel‑işleme sırasına göre oluşturun; öğeleri sırasız biçim bayrakları gibi düşünmeyin.

Düzenlenebilir ve Etkili Değerleri İncele

Düzenlenebilir bir işlem, ISlidesPicture.getImageTransform içinde depolanan nesnedir. Etkiye bağlı olarak, doğrudan yazılabilir üyeler sergileyebilir. Örneğin, IBlur yazılabilir radius ve grow değerlerini, IAlphaModulateFixed yazılabilir amount değerini, ve IAlphaBiLevel yazılabilir threshold değerini ortaya koyar. IDuotone gibi renk etkileri, değiştirilebilir IColorFormat nesnelerini açığa çıkarır.

IBrightnessContrast, IHSL, ITint ve IAlphaReplace gibi bazı işlem arayüzleri, oluşturma skalerlerini yazılabilir özellikler 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 yalnızca‑okunurdur. Tema‑bağımlı renkleri çözmek ve çizerin kullandığı normalleştirilmiş değerleri okumak için kullanışlıdır, ancak başka bir düzenleme yüzeyi değildir. Aşağıdaki örnek zinciri yineleyerek, ilgili API’nin sağladığı etkili değerleri inceler:

import com.aspose.slides.*;

Presentation presentation = new Presentation("image-transform-chain.pptx");
try {
    IPictureFrame pictureFrame = null;

    for (IShape shape : presentation.getSlides().get_Item(0).getShapes()) {
        if (shape instanceof IPictureFrame) {
            pictureFrame = (IPictureFrame) shape;
            break;
        }
    }

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

        for (int index = 0; index < imageTransform.size(); index++) {
            IImageTransformOperation operation = imageTransform.get_Item(index);
            System.out.println(index + ": " + operation.getClass().getSimpleName());

            if (operation instanceof IBrightnessContrast) {
                IBrightnessContrastEffectiveData data = ((IBrightnessContrast) operation).getEffective();
                System.out.println("  Brightness: " + data.getBrightness());
                System.out.println("  Contrast: " + data.getContrast());
            } else if (operation instanceof ILuminance) {
                ILuminanceEffectiveData data = ((ILuminance) operation).getEffective();
                System.out.println("  Brightness: " + data.getBrightness());
                System.out.println("  Contrast: " + data.getContrast());
            } else if (operation instanceof IDuotone) {
                IDuotoneEffectiveData data = ((IDuotone) operation).getEffective();
                System.out.println("  Dark color: " + data.getColor1());
                System.out.println("  Light color: " + data.getColor2());
            } else if (operation instanceof IColorReplace) {
                IColorReplaceEffectiveData data = ((IColorReplace) operation).getEffective();
                System.out.println("  Replacement color: " + data.getColor());
            } else if (operation instanceof IHSL) {
                IHSLEffectiveData data = ((IHSL) operation).getEffective();
                System.out.println("  HSL: " + data.getHue() + ", " + data.getSaturation() + ", " + data.getLuminance());
            } else if (operation instanceof ITint) {
                ITintEffectiveData data = ((ITint) operation).getEffective();
                System.out.println("  Tint: " + data.getHue() + ", " + data.getAmount());
            } else if (operation instanceof IBlur) {
                IBlurEffectiveData data = ((IBlur) operation).getEffective();
                System.out.println("  Blur radius: " + data.getRadius() + " pt");
            } else if (operation instanceof IAlphaModulateFixed) {
                IAlphaModulateFixedEffectiveData data = ((IAlphaModulateFixed) operation).getEffective();
                System.out.println("  Alpha amount: " + data.getAmount() + "%");
            } else if (operation instanceof IAlphaReplace) {
                IAlphaReplaceEffectiveData data = ((IAlphaReplace) operation).getEffective();
                System.out.println("  Replacement alpha: " + data.getAlpha() + "%");
            } else if (operation instanceof IAlphaBiLevel) {
                IAlphaBiLevelEffectiveData data = ((IAlphaBiLevel) operation).getEffective();
                System.out.println("  Alpha threshold: " + data.getThreshold() + "%");
            }
        }
    }
} finally {
    presentation.dispose();
}

Gri tonlama, alfa tavan ve alfa tersine çevirme gibi parametresiz etkiler de bir etkili‑veri nesnesine sahiptir, ancak yazdırılacak skaler ayar yoktur. Koleksiyondaki varlıkları ve konumları önemli bilgidir.

Görüntü Dönüştürmelerini Kaldır veya Temizle

Bir işlemi indeksle kaldırmak için IImageTransformOperationCollection.removeAt kullanın. Kaldırma işleminden sonra indeksler kayar; bu yüzden önce hedefi bulun, ardından yinelemeden sonra kaldırın. Tüm zinciri kaldırmak için ImageTransformOperationCollection.clear kullanın.

import com.aspose.slides.*;

Presentation presentation = new Presentation("image-transform-chain.pptx");
try {
    IPictureFrame pictureFrame = null;

    for (IShape shape : presentation.getSlides().get_Item(0).getShapes()) {
        if (shape instanceof IPictureFrame) {
            pictureFrame = (IPictureFrame) shape;
            break;
        }
    }

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

        for (int index = 0; index < imageTransform.size(); index++) {
            if (imageTransform.get_Item(index) instanceof IBlur) {
                blurIndex = index;
                break;
            }
        }

        if (blurIndex >= 0) {
            imageTransform.removeAt(blurIndex);
            System.out.println("The blur operation was removed.");
        }

        imageTransform.clear();
        System.out.println("Remaining operations: " + imageTransform.size());
        presentation.save("image-transforms-cleared.pptx", SaveFormat.Pptx);
    }
} finally {
    presentation.dispose();
}

Dönüştürmeleri kaldırmak veya temizlemek yalnızca resim biçimlendirmesini değiştirir. Yeniden kullanılan IPPImage kaynağı silinmez, yeniden sıkıştırılmaz veya başka bir şekilde değiştirilmez.

Sunum Biçimlerini ve Dışa Aktarım Hedeflerini Göz Önünde Bulundurun

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

  • Luminans, gri tonlama, duotone, tonlama, HSL, bulanıklaştırma ve yaygın alfa işlemleri gibi standart DrawingML işlemleri, PPTX çift yönlü işleminde hayatta kalma ihtimali en yüksek olandır. Korumak bir gereklilikse, oluşturulan dosyayı her zaman yeniden açın ve koleksiyonu inceleyin.
  • BrightnessContrast bir Office 2010 uzantısıdır, standart DrawingML luminans işlemi değildir. Bellek içi oluşturma için kullanılabilir, ancak PPTX kaydedilip yeniden açıldıktan sonra düzenlenebilir bir [IBrightnessContrast] olarak kalması garanti değildir. Kalıcı parlaklık ve kontrast ayarları için addLuminanceEffect tercih edin.
  • Eski PPT biçimi, tam DrawingML etki modelinden önce gelir. PPT’ye kaydetmek, desteklenmeyen işlemleri atabilir, zinciri desteklenen bir alt küme ile sınırlayabilir veya görünümü yaklaşık olarak oluşturabilir. Karmaşık düzenlenebilir zincirler için PPT’yi doğrulama biçimi olarak kullanmayın.
  • PNG, JPEG, TIFF, PDF, SVG, HTML veya diğer görsel çıktılar, desteklenen zinciri işlenmiş görünüme uygular. Bu çıktılar, düzenlenebilir bir IImageTransformOperationCollection içermez; raster biçimler sonucu piksellere dönüştürür, belge/vektör dışa aktarımları ise kendi işleme temsilini saklar.
  • Etkiler, bağlı bir görüntüyü kendi içinde bütünleştirilebilir hâle getirmez. Bağlı bir resmi işlerken, sunum yüklendiğinde bağlı kaynak mevcut olmalıdır.

Farklı sunum tüketicileri, özellikle birkaç alfa veya renk‑kuantizasyon işlemi birleştirildiğinde kenar durumlarını farklı işleyebilir. Kritik çıktılar için aynı Aspose.Slides sürümüyle düzenlenebilir çift yönlü ve nihai dışa aktarım biçimini test edin.

SSS

Görüntü dönüştürme etkileri gömülü resim verilerini değiştirir mi?
Hayır. İşlemler, resim doldurmayı kullanan ISlidesPicture nesnesine aittir. Altındaki IPPImage baytları değişmez.

Aynı görüntüyü yeniden kullanan iki resim çerçevesi etkilerini paylaşır mı?
Hayır. IPPImage yeniden kullanımı, görüntü verisinin çoğaltılmasını önler; ancak her resim çerçevesi normalde ayrı bir ISlidesPicture ve görüntü dönüştürme koleksiyonu taşır.

Renk, bulanıklaştırma ve alfa etkileri birleştirilebilir mi?
Evet. Koleksiyon, tek bir sıralı zincirde bunları kabul eder. Her işlem önceki işlem çıktısını etkilediğinden, değiştirme ve eşik işlemleri daha önceki renk veya alfa detayını silebilir; bu yüzden sıralamayı dikkatle planlayın.

Neden etkili değerler yalnızca‑okunur?
Etkili veri, render için kullanılan hesaplanmış değerleri (çözülmüş renkler dahil) temsil eder. Yazılabilir üyeleri olan bir işlem varsa, o nesneyi düzenleyin; aksi takdirde işlemi kaldırıp yeni oluşturma parametreleriyle bir yenisini ekleyin.

Hangi format bir dönüşüm zincirini korumalı?
PPTX kullanın ve dosyayı yeniden açarak doğrulayın. Eski PPT tam DrawingML etki modelini temsil edemez; render dışa aktarma biçimleri yalnızca görünümü korur, düzenlenebilir dönüşüm işlemlerini değil.