簡體   English   中英

將圖片插入現有形狀

[英]Insert Picture to an existing shape

我在 PPTX 文檔中插入圖像時遇到問題。

我想創建一個基於幻燈片蒙版的新幻燈片。 我使用此代碼在現有形狀中設置圖片

class Program
    {

        public static void Run()
        {
            string dataDir = ConfigurationManager.AppSettings["directoryToSave"];
            string srcDir = String.Concat(ConfigurationManager.AppSettings["Source"], "Master.pptx");
            string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            //string file = Path.Combine(appData, srcDir);
            using (Presentation presentation = new Presentation(srcDir))
            {
                IMasterLayoutSlideCollection layoutSlides = presentation.Masters[0].LayoutSlides;
                ILayoutSlide layoutSlide = null;

                foreach (ILayoutSlide titleAndObjectLayoutSlide in layoutSlides)
                {
                    if (titleAndObjectLayoutSlide.Name == "TITRE_CONTENU")
                    {
                        layoutSlide = titleAndObjectLayoutSlide;
                        break;
                    }
                }
                string filePath = String.Concat(ConfigurationManager.AppSettings["Source"], @"Logos\bp.png");
                Image imgs = (Image)new Bitmap(filePath);

                setShapePicture(presentation, layoutSlide, "picture", imgs);
                presentation.Slides.InsertEmptySlide(0, layoutSlide);
                presentation.Save(dataDir + "AddLayoutSlides_out.pptx", SaveFormat.Pptx);
            }
        }
        public static void setShapePicture(Presentation doc, ILayoutSlide layoutSlide, string shapeName, Image image)
        {
            var logo_shape = layoutSlide.Shapes.SingleOrDefault(r => r.Name.Equals(shapeName));
            IPPImage imgx = doc.Images.AddImage(image);
            //Add Picture Frame with height and width equivalent of Picture
            logo_shape.FillFormat.FillType = FillType.Picture;
            // Set the picture fill mode
            logo_shape.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Stretch;
            // Set the picture
            logo_shape.FillFormat.PictureFillFormat.Picture.Image = imgx;
        }
        static void Main(string[] args)
        {
            try
            {
                var path = ConfigurationManager.AppSettings["sourceAsposeLicensePath"];
                License license = new License();
                license.SetLicense(path);
                Run();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error" + ex.Message);
            }
            finally
            {
                Console.WriteLine("Terminated");
                Console.ReadKey();
            }
        }

    }

我在生成的文件中得到的是一個帶有背景圖片和占位符的形狀。 您可以在此鏈接MasterSlide+Logos+Output中找到所有資源

我已經觀察到您分享的要求,並且喜歡分享占位符不是實際形狀,而是給出形狀的骨架。 為了您的方便,我創建了一個示例代碼,可以幫助您實現您的要求。

public static void TestPlaceholderImage()
{
    String path = "C:\\Aspose Data\\";
    Presentation pres = new Presentation(path + "TestPicture.pptx");

    foreach (ISlide slide in pres.Slides)
    {
        foreach (IShape shape in slide.Shapes)
        {
            if (shape.Placeholder != null)
            {
                if (shape.Placeholder.Type == PlaceholderType.Picture)
                {
                    // Instantiate the ImageEx class
                    System.Drawing.Image img = (System.Drawing.Image)new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg");
                    IPPImage imgx = pres.Images.AddImage(img);

                    shape.FillFormat.FillType = FillType.Picture;
                    shape.FillFormat.PictureFillFormat.Picture.Image = imgx;

                    if (shape is AutoShape)
                    {
                        ITextFrame text = ((IAutoShape)shape).TextFrame;
                        text.Text = " ";
                        text.Paragraphs[0].ParagraphFormat.Bullet.Type = BulletType.None;

                    }
                }
            }
        }
    }

    pres.Save(path + "Addedpic.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

我在 Aspose 擔任支持開發人員/傳播者。

SampleData.zip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM