C++ का उपयोग करके प्रस्तुतियों में छवि प्रबंधन को अनुकूलित करें

परिचय

छवियां प्रस्तुतियों को अधिक आकर्षक और रोचक बनाती हैं। Microsoft PowerPoint में आप फ़ाइल, इंटरनेट या अन्य स्थानों से चित्रों को स्लाइडों पर डाल सकते हैं। इसी प्रकार, Aspose.Slides आपको अपने प्रस्तुतियों में विभिन्न प्रक्रियाओं के माध्यम से स्लाइडों में छवियां जोड़ने की सुविधा देता है।

Aspose.Slides इन लोकप्रिय फ़ॉर्मेट्स—JPEG, PNG, GIF और अन्य—में छवियों के साथ ऑपरेशनों को समर्थन देता है।

स्थानीय रूप से संग्रहीत छवियों को स्लाइड्स में जोड़ें

आप अपने कंप्यूटर की एक या कई छवियों को प्रस्तुतिकरण की स्लाइड पर जोड़ सकते हैं। यह C++ कोड नमूना आपको दिखाता है कि स्लाइड में छवि कैसे जोड़ें:

auto pres = System::MakeObject<Presentation>();

auto slide = pres->get_Slides()->idx_get(0);
auto image = pres->get_Images()->AddImage(File::ReadAllBytes(u"image.png"));
slide->get_Shapes()->AddPictureFrame(ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, image);

pres->Save(u"pres.pptx", SaveFormat::Pptx);

वेब से छवियों को स्लाइड्स में जोड़ें

यदि वह छवि जो आप स्लाइड में जोड़ना चाहते हैं आपके कंप्यूटर पर उपलब्ध नहीं है, तो आप सीधे वेब से छवि जोड़ सकते हैं।

यह C++ कोड नमूना आपको दिखाता है कि वेब से छवि को स्लाइड में कैसे जोड़ें:

auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
    
auto webClient = System::MakeObject<WebClient>();
auto imageData = webClient->DownloadData(System::MakeObject<Uri>(u"[REPLACE WITH URL]"));

auto image = pres->get_Images()->AddImage(imageData);
slide->get_Shapes()->AddPictureFrame(ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, image);

pres->Save(u"pres.pptx", SaveFormat::Pptx);

स्लाइड मास्टर में छवियों को जोड़ें

स्लाइड मास्टर वह शीर्ष स्लाइड है जो उसके नीचे सभी स्लाइडों की थीम, लेआउट आदि की जानकारी संग्रहीत और नियंत्रित करता है। इसलिए जब आप स्लाइड मास्टर में छवि जोड़ते हैं, तो वह छवि उस स्लाइड मास्टर के तहत सभी स्लाइडों पर दिखाई देती है।

यह C++ कोड नमूना आपको दिखाता है कि स्लाइड मास्टर में छवि कैसे जोड़ें:

auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto masterSlide = slide->get_LayoutSlide()->get_MasterSlide();

auto image = pres->get_Images()->AddImage(File::ReadAllBytes(u"image.png"));
masterSlide->get_Shapes()->AddPictureFrame(ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, image);

pres->Save(u"pres.pptx", SaveFormat::Pptx);

स्लाइड बैकग्राउंड के रूप में छवियों को जोड़ें

आप किसी विशिष्ट स्लाइड या कई स्लाइडों के लिए पृष्ठभूमि के रूप में एक तस्वीर का उपयोग कर सकते हैं। ऐसे मामलों में, आपको देखना चाहिए Setting Images as Backgrounds for Slides

प्रेज़ेंटेशन में SVG जोड़ें

आप किसी भी छवि को प्रेज़ेंटेशन में जोड़ या सम्मिलित कर सकते हैं, यदि आप AddPictureFrame मेथड का उपयोग करते हैं, जो IShapeCollection इंटरफ़ेस से संबंधित है।

SVG छवि के आधार पर एक इमेज ऑब्जेक्ट बनाने के लिए, आप इसे इस प्रकार कर सकते हैं:

  1. ImageShapeCollection में सम्मिलित करने के लिए SvgImage ऑब्जेक्ट बनाएं
  2. ISvgImage से PPImage ऑब्जेक्ट बनाएं
  3. IPPImage इंटरफ़ेस का उपयोग करके PictureFrame ऑब्जेक्ट बनाएं

यह कोड नमूना आपको दिखाता है कि ऊपर बताए गये चरणों को लागू करके SVG छवि को प्रेज़ेंटेशन में कैसे जोड़ें:

// दस्तावेज़ निर्देशिका का पथ
System::String dataDir = u"D:\\Documents\\";

// स्रोत SVG फ़ाइल का नाम
System::String svgFileName = dataDir + u"sample.svg";

// आउटपुट प्रस्तुति फ़ाइल का नाम
System::String outPptxPath = dataDir + u"presentation.pptx";

// नई प्रस्तुति बनाएं
auto p = System::MakeObject<Presentation>();

// SVG फ़ाइल की सामग्री पढ़ें
System::String svgContent = File::ReadAllText(svgFileName);

// SvgImage ऑब्जेक्ट बनाएं
System::SharedPtr<ISvgImage> svgImage = System::MakeObject<SvgImage>(svgContent);

// PPImage ऑब्जेक्ट बनाएं
System::SharedPtr<IPPImage> ppImage = p->get_Images()->AddImage(svgImage);

// एक नया PictureFrame बनाता है 
p->get_Slides()->idx_get(0)->get_Shapes()->AddPictureFrame(ShapeType::Rectangle, 200.0f, 100.0f, static_cast<float>(ppImage->get_Width()), static_cast<float>(ppImage->get_Height()), ppImage);

// PPTX फ़ॉर्मेट में प्रस्तुति सहेजें
p->Save(outPptxPath, SaveFormat::Pptx);

SVG को शैप्स के सेट में परिवर्तित करें

Aspose.Slides का SVG को शैप्स के सेट में परिवर्तन PowerPoint की उस विशेषता के समान है जो SVG छवियों के साथ काम करने के लिए प्रयोग की जाती है:

PowerPoint Popup Menu

यह सुविधा IShapeCollection इंटरफ़ेस के AddGroupShape मेथड के एक ओवरलोड द्वारा प्रदान की जाती है, जो पहला आर्ग्युमेंट के रूप में एक ISvgImage ऑब्जेक्ट लेती है।

यह कोड नमूना आपको दिखाता है कि वर्णित मेथड का उपयोग करके SVG फ़ाइल को शैप्स के सेट में कैसे परिवर्तित करें:

// दस्तावेज़ निर्देशिका का पथ
System::String dataDir = u"D:\\Documents\\";

// स्रोत SVG फ़ाइल का नाम
System::String svgFileName = dataDir + u"sample.svg";

// आउटपुट प्रस्तुति फ़ाइल का नाम
System::String outPptxPath = dataDir + u"presentation.pptx";

// नई प्रस्तुति बनाएँ
System::SharedPtr<IPresentation> presentation = System::MakeObject<Presentation>();

// SVG फ़ाइल की सामग्री पढ़ें
System::String svgContent = File::ReadAllText(svgFileName);

// SvgImage ऑब्जेक्ट बनाएं
System::SharedPtr<ISvgImage> svgImage = System::MakeObject<SvgImage>(svgContent);

// स्लाइड आकार प्राप्त करें
System::Drawing::SizeF slideSize = presentation->get_SlideSize()->get_Size();

// SVG छवि को आकार बदलकर स्लाइड आकार के अनुसार शैप्स के समूह में बदलें
presentation->get_Slides()->idx_get(0)->get_Shapes()->AddGroupShape(svgImage, 0.f, 0.f, slideSize.get_Width(), slideSize.get_Height());

// PPTX फॉर्मेट में प्रस्तुति सहेजें
presentation->Save(outPptxPath, SaveFormat::Pptx);

स्लाइड्स में EMF के रूप में छवियों को जोड़ें

Aspose.Slides for C++ आपको एक्सेल शीट्स से EMF छवियां जनरेट करने और Aspose.Cells के साथ इन छवियों को स्लाइड्स में EMF के रूप में जोड़ने की अनुमति देता है।

यह कोड नमूना आपको दिखाता है कि वर्णित कार्य कैसे करें:

System::String dataDir = u"D:\\Documents\\";

StringPtr cellsXls = new String(dataDir.ToWCS().c_str());
cellsXls->Append(L"chart.xls");
intrusive_ptr<Aspose::Cells::IWorkbook> book = Aspose::Cells::Factory::CreateIWorkbook(cellsXls);

intrusive_ptr<Aspose::Cells::IWorksheet> sheet = book->GetIWorksheets()->GetObjectByIndex(0);
intrusive_ptr<Aspose::Cells::Rendering::IImageOrPrintOptions> options = Aspose::Cells::Factory::CreateIImageOrPrintOptions();
options->SetHorizontalResolution(200);
options->SetVerticalResolution(200);
options->SetImageFormat(Aspose::Cells::Systems::Drawing::Imaging::ImageFormat::GetEmf());

// Save the workbook to stream
intrusive_ptr<Aspose::Cells::Rendering::ISheetRender> sr = Aspose::Cells::Factory::CreateISheetRender(sheet, options);

System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();

pres->get_Slides()->RemoveAt(0);

System::String EmfSheetName;
for (int32_t j = 0; j < sr->GetPageCount(); j++)
{
    EmfSheetName = dataDir + u"test" + System::String::FromWCS(sheet->GetName()->value()) + u" Page" + (j + 1) + u".out.emf";
    sr->ToImage(j, new String(EmfSheetName.ToWCS().c_str()));

    auto bytes = System::IO::File::ReadAllBytes(EmfSheetName);
    auto emfImage = pres->get_Images()->AddImage(bytes);

    System::SharedPtr<ISlide> slide = pres->get_Slides()->AddEmptySlide(pres->get_LayoutSlides()->GetByType(SlideLayoutType::Blank));
    auto slideSize = pres->get_SlideSize()->get_Size();
    slide->get_Shapes()->AddPictureFrame(ShapeType::Rectangle, 0.0f, 0.0f, slideSize.get_Width(), slideSize.get_Height(), emfImage);
}

pres->Save(dataDir + u"Saved.pptx", SaveFormat::Pptx);

इमेज कलेक्शन में छवियों को बदलें

Aspose.Slides आपको प्रस्तुति के इमेज कलेक्शन (जिसमें स्लाइड शैप्स द्वारा उपयोग की गई छवियां भी शामिल हैं) में संग्रहीत छवियों को बदलने की सुविधा देता है। यह अनुभाग कलेक्शन में छवियों को अपडेट करने के कई तरीके दर्शाता है। API सीधी विधियां प्रदान करती है जिससे आप रॉ बाइट डेटा, एक IImage इंस्टेंस, या कलेक्शन में पहले से मौजूद किसी अन्य छवि का उपयोग करके छवि बदल सकते हैं।

नीचे दिए गए चरणों का पालन करें:

  1. उस प्रस्तुति फ़ाइल को लोड करें जिसमें छवियां हैं, इसके लिए Presentation क्लास का उपयोग करें।
  2. फ़ाइल से नई छवि को बाइट एरे में लोड करें।
  3. बाइट एरे का उपयोग करके लक्ष्य छवि को नई छवि से बदलें।
  4. दूसरे तरीके में, छवि को एक IImage ऑब्जेक्ट में लोड करें और लक्ष्य छवि को उस ऑब्जेक्ट से बदलें।
  5. तीसरे तरीके में, लक्ष्य छवि को प्रस्तुति के इमेज कलेक्शन में पहले से मौजूद किसी छवि से बदलें।
  6. संशोधित प्रस्तुति को PPTX फ़ाइल के रूप में लिखें।
// ऐसी प्रस्तुति फ़ाइल का प्रतिनिधित्व करने वाले Presentation क्लास का उदाहरण बनाएं।
auto presentation = MakeObject<Presentation>(u"sample.pptx");

// पहला तरीका।
auto imageData = File::ReadAllBytes(u"image0.jpeg");
auto oldImage = presentation->get_Image(0);
oldImage->ReplaceImage(imageData);

// दूसरा तरीका।
auto newImage = Images::FromFile(u"image1.png");
oldImage = presentation->get_Image(1);
oldImage->ReplaceImage(newImage);
newImage->Dispose();

// तीसरा तरीका।
oldImage = presentation->get_Image(2);
oldImage->ReplaceImage(presentation->get_Image(3));

// प्रस्तुति को फ़ाइल में सहेजें।
presentation->Save(u"output.pptx", SaveFormat::Pptx);
presentation->Dispose();

FAQ

क्या मूल छवि का रिज़ॉल्यूशन सम्मिलन के बाद भी बना रहता है?

हाँ। स्रोत पिक्सेल संरक्षित रहते हैं, लेकिन अंतिम स्वरूप इस बात पर निर्भर करता है कि स्लाइड पर चित्र को कैसे स्केल किया गया है और सहेजते समय कौन सा संपीड़न लागू किया गया है।

कई स्लाइडों में एक ही लोगो को एक साथ बदलने का सबसे अच्छा तरीका क्या है?

लोगो को मास्टर स्लाइड या लेआउट पर रखें और उसे प्रस्तुति के इमेज कलेक्शन में बदलें—परिवर्तन सभी उन तत्वों में प्रसारित हो जाएंगे जो उस संसाधन का उपयोग करते हैं।

क्या सम्मिलित SVG को संपादन योग्य शैप्स में परिवर्तित किया जा सकता है?

हाँ। आप एक SVG को शैप्स के समूह में बदल सकते हैं, जिसके बाद व्यक्तिगत भाग मानक शैप गुणों के साथ संपादन योग्य हो जाते हैं।

मैं कई स्लाइडों के लिए एक साथ पृष्ठभूमि के रूप में चित्र कैसे सेट कर सकता हूं?

चित्र को पृष्ठभूमि के रूप में असाइन करें मास्टर स्लाइड या संबंधित लेआउट पर—जो भी स्लाइडें उस मास्टर/लेआउट का उपयोग करती हैं, वे पृष्ठभूमि को विरासत में प्राप्त करेंगी।

मैं प्रस्तुति के आकार के अत्यधिक बढ़ने से कैसे बच सकता हूं जब कई चित्र हों?

एक ही छवि संसाधन को पुन: उपयोग करें, अनावश्यक प्रतियों से बचें, उचित रिज़ॉल्यूशन चुनें, सहेजते समय संपीड़न लागू करें, और जहाँ उपयुक्त हो, दोहराव वाले ग्राफिक्स को मास्टर पर रखें।