Optimera bildhantering i presentationer med C++
Introduktion
Bilder gör presentationer mer engagerande och intressanta. I Microsoft PowerPoint kan du infoga bilder från en fil, internet eller andra platser på bilder. På samma sätt låter Aspose.Slides dig lägga till bilder på bilder i dina presentationer genom olika metoder.
Tip
Aspose erbjuder gratis konverterare—JPEG till PowerPoint och PNG till PowerPoint—som gör det möjligt för användare att snabbt skapa presentationer från bilder.Info
Om du vill lägga till en bild som ett ramobjekt—särskilt om du planerar att använda standardformateringsalternativ för att ändra dess storlek, lägga till effekter osv—se Picture Frame.Note
Du kan manipulera in-/utdataoperationer som involverar bilder och PowerPoint-presentationer för att konvertera en bild från ett format till ett annat. Se dessa sidor: konvertera bild till JPG; konvertera JPG till bild; konvertera JPG till PNG, konvertera PNG till JPG; konvertera PNG till SVG, konvertera SVG till PNG.Aspose.Slides stöder operationer med bilder i dessa populära format: JPEG, PNG, GIF och andra.
Lägg till bilder lagrade lokalt på bilder
Du kan lägga till en eller flera bilder från din dator på en bild i en presentation. Den här exempelkoden i C++ visar hur du lägger till en bild på en bild:
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);
Lägg till bilder från webben på bilder
Om bilden du vill lägga till på en bild inte finns på din dator kan du lägga till bilden direkt från webben.
Den här exempelkoden visar hur du lägger till en bild från webben på en bild i 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);
Lägg till bilder på bildmaster
En bildmaster är den översta bilden som lagrar och styr information (tema, layout osv.) om alla bilder under den. Således, när du lägger till en bild på en bildmaster, visas den bilden på varje bild under den bildmastern.
Den här C++-exempelkoden visar hur du lägger till en bild på en bildmaster:
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);
Lägg till bilder som bildbakgrunder
Du kan välja att använda en bild som bakgrund för en specifik bild eller flera bilder. I så fall måste du se Setting Images as Backgrounds for Slides.
Lägg till SVG i presentationer
Du kan lägga till eller infoga vilken bild som helst i en presentation genom att använda metoden AddPictureFrame som tillhör gränssnittet IShapeCollection.
För att skapa ett bildobjekt baserat på en SVG-bild kan du göra så här:
- Skapa SvgImage-objekt för att infoga det i ImageShapeCollection
- Skapa PPImage-objekt från ISvgImage
- Skapa PictureFrame-objekt med IPPImage-gränssnittet
Den här exempelkoden visar hur du implementerar stegen ovan för att lägga till en SVG-bild i en presentation:
// Sökvägen till dokumentkatalogen
System::String dataDir = u"D:\\Documents\\";
// Källfilnamn för SVG
System::String svgFileName = dataDir + u"sample.svg";
// Utdatafilnamn för presentationen
System::String outPptxPath = dataDir + u"presentation.pptx";
// Skapa ny presentation
auto p = System::MakeObject<Presentation>();
// Läs SVG-filens innehåll
System::String svgContent = File::ReadAllText(svgFileName);
// Skapa SvgImage-objekt
System::SharedPtr<ISvgImage> svgImage = System::MakeObject<SvgImage>(svgContent);
// Skapa PPImage-objekt
System::SharedPtr<IPPImage> ppImage = p->get_Images()->AddImage(svgImage);
// Skapar en ny 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);
// Spara presentation i PPTX-format
p->Save(outPptxPath, SaveFormat::Pptx);
Konvertera SVG till en mängd former
Aspose.Slides konvertering av SVG till en mängd former är liknande PowerPoint-funktionen som används för att arbeta med SVG-bilder:

Funktionen tillhandahålls av en av overloads av metoden AddGroupShape i gränssnittet IShapeCollection som tar ett ISvgImage-objekt som första argument.
Den här exempelkoden visar hur du använder den beskrivna metoden för att konvertera en SVG-fil till en mängd former:
// Sökvägen till dokumentkatalogen
System::String dataDir = u"D:\\Documents\\";
// Källfilnamn för SVG
System::String svgFileName = dataDir + u"sample.svg";
// Utdatafilnamn för presentationen
System::String outPptxPath = dataDir + u"presentation.pptx";
// Skapa ny presentation
System::SharedPtr<IPresentation> presentation = System::MakeObject<Presentation>();
// Läs SVG-filens innehåll
System::String svgContent = File::ReadAllText(svgFileName);
// Skapa SvgImage-objekt
System::SharedPtr<ISvgImage> svgImage = System::MakeObject<SvgImage>(svgContent);
// Hämta bildstorlek
System::Drawing::SizeF slideSize = presentation->get_SlideSize()->get_Size();
// Konvertera SVG-bild till en grupp av former och skala den till bildens storlek
presentation->get_Slides()->idx_get(0)->get_Shapes()->AddGroupShape(svgImage, 0.f, 0.f, slideSize.get_Width(), slideSize.get_Height());
// Spara presentation i PPTX-format
presentation->Save(outPptxPath, SaveFormat::Pptx);
Lägg till bilder som EMF på bilder
Aspose.Slides för C++ låter dig skapa EMF-bilder från Excel-ark och lägga till bilderna som EMF på bilder med Aspose.Cells.
Den här exempelkoden visar hur du utför den beskrivna uppgiften:
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);
Byt ut bilder i bildsamlingen
Aspose.Slides låter dig ersätta bilder som lagras i en presentations bildsamling (inklusive de som används av bildformer). Detta avsnitt visar flera tillvägagångssätt för att uppdatera bilder i samlingen. API:et erbjuder enkla metoder för att ersätta en bild med rå byte‑data, en IImage-instans eller en annan bild som redan finns i samlingen.
Följ stegen nedan:
- Ladda presentationsfilen som innehåller bilder med klassen Presentation.
- Läs in en ny bild från en fil till en byte‑array.
- Ersätt mål‑bilden med den nya bilden med hjälp av byte‑arrayen.
- I det andra tillvägagångssättet läses bilden in i ett IImage-objekt och mål‑bilden ersätts med det objektet.
- I det tredje tillvägagångssättet ersätts mål‑bilden med en bild som redan finns i presentationens bildsamling.
- Spara den modifierade presentationen som en PPTX‑fil.
// Instansiera Presentation-klassen som representerar en presentationsfil.
auto presentation = MakeObject<Presentation>(u"sample.pptx");
// Det första sättet.
auto imageData = File::ReadAllBytes(u"image0.jpeg");
auto oldImage = presentation->get_Image(0);
oldImage->ReplaceImage(imageData);
// Det andra sättet.
auto newImage = Images::FromFile(u"image1.png");
oldImage = presentation->get_Image(1);
oldImage->ReplaceImage(newImage);
newImage->Dispose();
// Det tredje sättet.
oldImage = presentation->get_Image(2);
oldImage->ReplaceImage(presentation->get_Image(3));
// Spara presentationen till en fil.
presentation->Save(u"output.pptx", SaveFormat::Pptx);
presentation->Dispose();
Info
Genom att använda Aspose GRATIS Text to GIF-konverteraren kan du enkelt animera texter, skapa GIF‑filer från texter osv.FAQ
Behåller den ursprungliga bildupplösningen sin integritet efter infogning?
Ja. Källpixlarna bevaras, men det slutgiltiga utseendet beror på hur picture skalas på bilden och eventuell kompression som tillämpas vid sparande.
Vad är det bästa sättet att ersätta samma logotyp på dussintals bilder på en gång?
Placera logotypen på mastern eller en layout och ersätt den i presentationens bildsamling — uppdateringar sprids till alla element som använder den resursen.
Kan en infogad SVG konverteras till redigerbara former?
Ja. Du kan konvertera en SVG till en grupp av former, varpå enskilda delar blir redigerbara med standardformsegenskaper.
Hur kan jag ställa in en bild som bakgrund för flera bilder på en gång?
Assign the image as the background på master‑bilden eller den relevanta layouten — alla bilder som använder den masteren/layouten kommer att ärva bakgrunden.
Hur förhindrar jag att presentationen växer kraftigt i storlek på grund av många bilder?
Återanvänd en enda bildresurs istället för dubletter, välj rimliga upplösningar, tillämpa kompression vid sparande och behåll återkommande grafik på master‑sidan där det är lämpligt.