프레젠테이션에서 이미지 작업 — Aspose.Slides FOSS for C++
Aspose.Slides FOSS for C++를 사용하면 프레젠테이션의 공유 이미지 컬렉션에 이미지를 삽입하고 PictureFrame 도형을 사용하여 슬라이드에 표시할 수 있습니다. 이미지는 FillType::PICTURE를 통해 도형 배경 채우기로도 사용할 수 있습니다.
파일에서 이미지 추가
디스크에서 이미지 바이트를 로드하고 pres.images().add_image()을 사용하여 프레젠테이션의 이미지 컬렉션에 추가합니다. 그런 다음 이미지를 PictureFrame으로 슬라이드에 배치합니다:
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/image_collection.h>
#include <Aspose/Slides/Foss/picture_frame.h>
#include <Aspose/Slides/Foss/pp_image.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <cstdint>
#include <fstream>
#include <iterator>
#include <vector>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
// Add the image to the shared collection
std::ifstream f("logo.png", std::ios::binary);
std::vector<std::uint8_t> data(
(std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
auto& img = pres.images().add_image(data);
// Place it on the slide as a PictureFrame
pres.slides()[0].shapes().add_picture_frame(
ShapeType::RECTANGLE, 50, 50, 300, 200, img);
pres.save("with-image.pptx", SaveFormat::PPTX);
return 0;
}add_picture_frame()에 대한 네 개의 위치 인수는: x, y, width, height 포인트 단위입니다.
바이트 벡터에서 이미지 추가
이미 메모리에 이미지 바이트가 있는 경우(예: URL에서 다운로드했거나 데이터베이스에서 읽은 경우), add_image()에 직접 전달하십시오:
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/image_collection.h>
#include <Aspose/Slides/Foss/pp_image.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <cstdint>
#include <fstream>
#include <iterator>
#include <vector>
using namespace Aspose::Slides::Foss;
int main() {
// Simulate having bytes in memory
std::ifstream f("photo.jpg", std::ios::binary);
std::vector<std::uint8_t> image_bytes(
(std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
Presentation pres;
auto& img = pres.images().add_image(image_bytes);
pres.slides()[0].shapes().add_picture_frame(
ShapeType::RECTANGLE, 100, 80, 400, 250, img);
pres.save("from-bytes.pptx", SaveFormat::PPTX);
return 0;
}PictureFrame 위치 지정 및 크기 조정
add_picture_frame()에 의해 반환된 PictureFrame은 모든 Shape 기하학 속성을 상속하며 생성 후 재배치할 수 있습니다:
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/image_collection.h>
#include <Aspose/Slides/Foss/picture_frame.h>
#include <Aspose/Slides/Foss/pp_image.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <cstdint>
#include <fstream>
#include <iterator>
#include <vector>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
std::ifstream f("photo.jpg", std::ios::binary);
std::vector<std::uint8_t> data(
(std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
auto& img = pres.images().add_image(data);
auto& pf = pres.slides()[0].shapes().add_picture_frame(
ShapeType::RECTANGLE, 0, 0, 100, 100, img);
// Reposition and resize after creation
pf.set_x(50);
pf.set_y(100);
pf.set_width(350);
pf.set_height(250);
pres.save("positioned.pptx", SaveFormat::PPTX);
return 0;
}이미지 를 도형 채우기로 사용
모든 도형(그림 프레임에만 국한되지 않음)은 이미지를 배경 채우기로 사용할 수 있습니다. fill_type를 FillType::PICTURE로 설정하고 이미지를 그림 채우기 형식에 할당하십시오:
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/image_collection.h>
#include <Aspose/Slides/Foss/picture_fill_mode.h>
#include <Aspose/Slides/Foss/pp_image.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <cstdint>
#include <fstream>
#include <iterator>
#include <vector>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
std::ifstream f("background.png", std::ios::binary);
std::vector<std::uint8_t> data(
(std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
auto& img = pres.images().add_image(data);
auto& slide = pres.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
ShapeType::ROUND_CORNER_RECTANGLE, 50, 50, 400, 250);
shape.fill_format().set_fill_type(FillType::PICTURE);
shape.fill_format().picture_fill_format().set_picture_fill_mode(PictureFillMode::STRETCH);
shape.fill_format().picture_fill_format().picture().set_image(&img);
pres.save("picture-fill.pptx", SaveFormat::PPTX);
return 0;
}PictureFillMode::STRETCH은 이미지를 전체 모양에 맞게 확대합니다. 반복 패턴에는 TILE을 사용하십시오.