Förbättra bildbehandling med Modern API
Introduktion
För närvarande har Aspose.Slides för C++-biblioteket beroenden i sitt offentliga API på följande klasser från System::Drawing:
Från och med version 24.4 har detta offentliga API deklarerats som föråldrat.
För att bli av med beroenden på System::Drawing i det offentliga API:t lade vi till det så kallade “Modern API”. Metoder med System::Drawing::Image och System::Drawing::Bitmap har förklarats som föråldrade och bör ersättas med motsvarande metoder från Modern API. Metoder med System::Drawing::Graphics har förklarats som föråldrade och har ingen direkt Modern API‑ersättning.
I de aktuella versionerna bör du betrakta det offentliga API som är beroende av System::Drawing-typer som legacy/föråldrat. Använd Modern API för ny kod och när du migrerar befintliga bildbehandlingsarbetsflöden.
Modern API
Följande klasser och uppräkningar har lagts till i det offentliga API:t:
- Aspose::Slides::IImage - representerar raster- eller vektorbilden.
- Aspose::Slides::ImageFormat - representerar bildens filformat.
- Aspose::Slides::Images - metoder för att skapa och arbeta med [IImage]-gränssnittet.
Använd GetImage för att rendera en enda bild eller form. Använd GetImages för att rendera flera bildspelssidor. Använd [Images]-metoder för att läsa in bilder, AddImage med [IImage] för att lägga till dem i en presentation och ReplaceImage med [IImage] för att uppdatera en befintlig bild i presentationen.
Ett typiskt scenario för att använda det nya API:et kan se ut som följer:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
// instansiera en engångsinstans av IImage från filen på disk.
System::SharedPtr<IImage> image = Images::FromFile(u"image.png");
// skapa en PowerPoint-bild genom att lägga till en IImage-instans till presentationens bilder.
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
// lägg till en bildform på bildspel #1
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
// hämta en instans av IImage som representerar bildspel #1.
auto slideImage = pres->get_Slide(0)->GetImage(System::Drawing::Size(1920, 1080));
// spara bilden på disk.
slideImage->Save(u"slide1.jpeg", Aspose::Slides::ImageFormat::Jpeg);
Ersätta gammal kod med Modern API
För att underlätta övergången upprepar gränssnittet för den nya IImage de separata signaturerna för klasserna System::Drawing::Image och System::Drawing::Bitmap. I allmänhet behöver du bara ersätta anropet till den gamla metoden som använder System::Drawing med den nya.
Hämta en bilds miniatyr
Legacy/deprecated API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->GetThumbnail()->Save(u"slide1.png");
Modern API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->GetImage()->Save(u"slide1.png");
Hämta en miniatyr för en form
Legacy/deprecated API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->get_Shape(0)->GetThumbnail()->Save(u"shape.png");
Modern API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->get_Shape(0)->GetImage()->Save(u"shape.png");
Hämta en miniatyr för en presentation
Legacy/deprecated API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
auto bitmaps = pres->GetThumbnails(System::MakeObject<RenderingOptions>(), System::Drawing::Size(1980, 1028));
for (int32_t index = 0; index < bitmaps->get_Length(); index++)
{
System::SharedPtr<System::Drawing::Bitmap> thumbnail = bitmaps[index];
thumbnail->Save(System::String::Format(u"slide_{0}.png", index), System::Drawing::Imaging::ImageFormat::get_Png());
}
Modern API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
auto images = pres->GetImages(System::MakeObject<RenderingOptions>(), System::Drawing::Size(1980, 1028));
for (int32_t index = 0; index < images->get_Length(); index++)
{
System::SharedPtr<IImage> thumbnail = images[index];
thumbnail->Save(System::String::Format(u"slide_{0}.png", index), Aspose::Slides::ImageFormat::Png);
}
Lägga till en bild i en presentation
Legacy/deprecated API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
System::SharedPtr<System::Drawing::Image> image = System::Drawing::Image::FromFile(u"image.png");
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
Modern API:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
System::SharedPtr<Aspose::Slides::IImage> image = Aspose::Slides::Images::FromFile(u"image.png");
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
Föråldrande metoder/egenskaper och deras ersättning i Modern API
Presentation Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| GetThumbnails(System::SharedPtr<Export::IRenderingOptions> options) | GetImages(System::SharedPtr<Export::IRenderingOptions> options) |
| GetThumbnails(System::SharedPtr<Export::IRenderingOptions> options, System::ArrayPtr<int32_t> slides) | GetImages(System::SharedPtr<Export::IRenderingOptions> options, System::ArrayPtr<int32_t> slides) |
| GetThumbnails(System::SharedPtr<Export::IRenderingOptions> options, float scaleX, float scaleY) | GetImages(System::SharedPtr<Export::IRenderingOptions> options, float scaleX, float scaleY) |
| GetThumbnails(System::SharedPtr<Export::IRenderingOptions> options, System::ArrayPtr<int32_t> slides, float scaleX, float scaleY) | GetImages(System::SharedPtr<Export::IRenderingOptions> options, System::ArrayPtr<int32_t> slides, float scaleX, float scaleY) |
| GetThumbnails(System::SharedPtr<Export::IRenderingOptions> options, System::Drawing::Size imageSize) | GetImages(System::SharedPtr<Export::IRenderingOptions> options, System::Drawing::Size imageSize) |
| GetThumbnails(System::SharedPtr<Export::IRenderingOptions> options, System::ArrayPtr<int32_t> slides, System::Drawing::Size imageSize) | GetImages(System::SharedPtr<Export::IRenderingOptions> options, System::ArrayPtr<int32_t> slides, System::Drawing::Size imageSize) |
| Save(System::String fname, System::ArrayPtr<int32_t> slides, Export::SaveFormat format) | No Modern API replacement |
| Save(System::String fname, System::ArrayPtr<int32_t> slides, Export::SaveFormat format, System::SharedPtr<Export::ISaveOptions> options) | No Modern API replacement |
Slide Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| GetThumbnail() | GetImage() |
| GetThumbnail(float scaleX, float scaleY) | GetImage(float scaleX, float scaleY) |
| GetThumbnail(System::Drawing::Size imageSize) | GetImage(System::Drawing::Size imageSize) |
| GetThumbnail(System::SharedPtr<Export::ITiffOptions> options) | GetImage(System::SharedPtr<Export::IRenderingOptions> options |
| GetThumbnail(System::SharedPtr<Export::IRenderingOptions> options) | GetImage(System::SharedPtr<Export::IRenderingOptions> options) |
| GetThumbnail(System::SharedPtr<Export::IRenderingOptions> options, float scaleX, float scaleY) | GetImage(System::SharedPtr<Export::IRenderingOptions> options, float scaleX, float scaleY) |
| GetThumbnail(System::SharedPtr<Export::IRenderingOptions> options, System::Drawing::Size imageSize) | GetImage(System::SharedPtr<Export::IRenderingOptions> options, System::Drawing::Size imageSize) |
| RenderToGraphics(System::SharedPtr<Export::IRenderingOptions> options, System::SharedPtr<System::Drawing::Graphics> graphics) | No Modern API replacement |
| RenderToGraphics(System::SharedPtr<Export::IRenderingOptions> options, System::SharedPtr<System::Drawing::Graphics> graphics, float scaleX, float scaleY) | No Modern API replacement |
| RenderToGraphics(System::SharedPtr<Export::IRenderingOptions> options, System::SharedPtr<System::Drawing::Graphics> graphics, System::Drawing::Size renderingSize) | No Modern API replacement |
Shape Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| GetThumbnail() | GetImage() |
| GetThumbnail(ShapeThumbnailBounds bounds, float scaleX, float scaleY) | GetImage(ShapeThumbnailBounds bounds, float scaleX, float scaleY) |
ImageCollection Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| AddImage(System::SharedPtr<System::Drawing::Image> image) | AddImage(System::SharedPtr<IImage> image) |
PPImage Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| ReplaceImage(System::SharedPtr<System::Drawing::Image> newImage) | ReplaceImage(System::SharedPtr<Aspose::Slides::IImage> newImage) |
| get_SystemImage() | get_Image() |
PatternFormat Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| GetTileImage(System::Drawing::Color background, System::Drawing::Color foreground) | GetTile(System::Drawing::Color background, System::Drawing::Color foreground) |
| GetTileImage(System::Drawing::Color styleColor) | GetTile(System::Drawing::Color styleColor) |
IPatternFormatEffectiveData Class
| Metodsignatur | Ersättningsmetodsignatur |
|---|---|
| GetTileImage(System::Drawing::Color background, System::Drawing::Color foreground) | GetTileIImage(System::Drawing::Color background, System::Drawing::Color foreground) |
API-stöd för System::Drawing::Graphics
Metoder med System::Drawing::Graphics är förklarade som föråldrade och har ingen direkt Modern API‑ersättning.
Använd Modern API:s bildrenderingsmetoder istället för API:t som renderar till System::Drawing::Graphics:
- Slide::RenderToGraphics(System::SharedPtr<Export::IRenderingOptions>, System::SharedPtr<System::Drawing::Graphics>)
- Slide::RenderToGraphics(System::SharedPtr<Export::IRenderingOptions>, System::SharedPtr<System::Drawing::Graphics>, float, float)
- Slide::RenderToGraphics(System::SharedPtr<Export::IRenderingOptions>, System::SharedPtr<System::Drawing::Graphics>, System::Drawing::Size)
FAQ
Varför togs System::Drawing::Graphics bort?
Stödet för System::Drawing::Graphics är föråldrat i det offentliga API:t för att förena arbete med rendering och bilder, eliminera beroenden på plattforms‑specifika komponenter och gå över till ett plattformsoberoende tillvägagångssätt med IImage. Använd GetImage eller GetImages i stället för att rendera till System::Drawing::Graphics.
Vilken praktisk fördel har IImage jämfört med System::Drawing::Image/System::Drawing::Bitmap?
IImage förenar arbete med både raster- och vektorbilder, förenklar sparande i olika format via ImageFormat, minskar beroendet av System::Drawing och gör koden mer portabel över olika miljöer.
Kommer Modern API att påverka prestandan vid generering av miniatyrbilder?
Att byta från GetThumbnail till GetImage försämrar inte scenarierna: de nya metoderna erbjuder samma möjligheter att producera bilder med alternativ och storlekar, samtidigt som stöd för renderingsalternativ bevaras. Den specifika vinsten eller förlusten beror på scenariot, men funktionellt är ersättningarna likvärdiga.