C++ में PowerPoint स्लाइड्स में इमेज कैसे जोड़ें
Aspose.Slides FOSS में छवियों को picture frames के रूप में एम्बेड किया जाता है, ऐसी आकृतियाँ जो एक छवि को धारण करती हैं और अन्य किसी भी आकृति की तरह स्थित, आकार बदल और शैलीबद्ध की जा सकती हैं। छवि डेटा एक बार prs.images() संग्रह में संग्रहीत किया जाता है और फ्रेम द्वारा संदर्भित किया जाता है।
पूर्वापेक्षाएँ
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .फ़ाइल से एक छवि जोड़ें
#include <Aspose/Slides/Foss/presentation.h>
#include <fstream>
#include <vector>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
// Load image into the presentation's image collection
std::ifstream file("photo.jpg", std::ios::binary);
std::vector<uint8_t> data((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
auto& img = prs.images().add_image(data);
// Add a picture frame at (x=50, y=50, width=400, height=300) in points
slide.shapes().add_picture_frame(
asf::ShapeType::RECTANGLE, 50, 50, 400, 300, img);
prs.save("with-image.pptx", asf::SaveFormat::PPTX);
return 0;
}यह add_picture_frame हस्ताक्षर:
add_picture_frame(shape_type, x, y, width, height, image) -> PictureFrame&सभी आयाम points में हैं (1 point = 1/72 इंच)। एक मानक 10 x 7.5 इंच स्लाइड के लिए, निर्देशांक स्थान 720 x 540 points है।
मेमोरी बफ़र से एक छवि जोड़ें
यदि आपके पास पहले से ही इमेज बाइट्स के रूप में है (उदाहरण के लिए, नेटवर्क से डाउनलोड की गई या डेटाबेस से पढ़ी गई):
#include <Aspose/Slides/Foss/presentation.h>
#include <vector>
int main() {
namespace asf = Aspose::Slides::Foss;
// Assume image_bytes is populated from some source
std::vector<uint8_t> image_bytes = /* ... */;
asf::Presentation prs;
auto& img = prs.images().add_image(image_bytes);
prs.slides()[0].shapes().add_picture_frame(
asf::ShapeType::RECTANGLE, 200, 100, 300, 200, img);
prs.save("logo-slide.pptx", asf::SaveFormat::PPTX);
return 0;
}फ़िल मोड को नियंत्रित करें
picture_format() एक PictureFrame पर यह नियंत्रित करता है कि छवि फ्रेम की सीमाओं को कैसे भरती है:
#include <Aspose/Slides/Foss/presentation.h>
#include <fstream>
#include <vector>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
std::ifstream file("texture.png", std::ios::binary);
std::vector<uint8_t> data((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
auto& img = prs.images().add_image(data);
auto& frame = prs.slides()[0].shapes().add_picture_frame(
asf::ShapeType::RECTANGLE, 50, 50, 600, 350, img);
// STRETCH: scale image to fill the frame exactly (default)
frame.picture_format().set_picture_fill_mode(asf::PictureFillMode::STRETCH);
// TILE: repeat the image in a grid pattern
// frame.picture_format().set_picture_fill_mode(asf::PictureFillMode::TILE);
prs.save("filled.pptx", asf::SaveFormat::PPTX);
return 0;
}PictureFillMode | व्यवहार |
|---|---|
STRETCH | फ़्रेम को भरने के लिए छवि को स्केल करें, अनुपात को अनदेखा करते हुए |
TILE | छवि को टाइल पैटर्न के रूप में दोहराएँ |
विभिन्न स्लाइड्स में कई छवियां जोड़ें
#include <Aspose/Slides/Foss/presentation.h>
#include <fstream>
#include <vector>
#include <string>
#include <filesystem>
int main() {
namespace asf = Aspose::Slides::Foss;
std::vector<std::string> image_files = {"slide1.jpg", "slide2.jpg", "slide3.jpg"};
asf::Presentation prs;
auto& layout = prs.slides()[0].layout_slide();
// Ensure enough slides exist
while (prs.slides().size() < image_files.size()) {
prs.slides().add_empty_slide(layout);
}
for (size_t i = 0; i < image_files.size(); ++i) {
if (!std::filesystem::exists(image_files[i])) continue;
std::ifstream file(image_files[i], std::ios::binary);
std::vector<uint8_t> data((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
auto& img = prs.images().add_image(data);
prs.slides()[i].shapes().add_picture_frame(
asf::ShapeType::RECTANGLE, 0, 0, 720, 540, img);
}
prs.save("multi-image.pptx", asf::SaveFormat::PPTX);
return 0;
}मौजूदा प्रस्तुति में छवियों की गिनती करें
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("with-image.pptx");
std::cout << "Presentation contains " << prs.images().size() << " image(s)\n";
return 0;
}prs.images() संग्रह सभी स्लाइडों में साझा किया गया है: एक ही इमेज बाइट्स को केवल एक बार संग्रहीत किया जाता है, भले ही चित्र फ्रेम कई स्लाइडों पर दिखाई दे।