Képfeldolgozás fejlesztése a Modern API-val
Bevezetés
Jelenleg az Aspose.Slides for C++ könyvtár nyilvános API-ja függ a System::Drawing alábbi osztályaitól:
A 24.4-es verziótól ez a nyilvános API elavultnak lett nyilvánítva.
Az API-ban a System::Drawing függőségek megszüntetése érdekében bevezettük a úgynevezett „Modern API”-t. A System::Drawing::Image és a System::Drawing::Bitmap használatával írt metódusok elavultnak vannak jelölve, és a Modern API megfelelő metódusaival kell helyettesíteni őket. A System::Drawing::Graphics használatával írt metódusok szintén elavultak, és nincs közvetlen Modern API helyettesítőjük.
A jelenlegi verziókban tekintse a System::Drawing típusokra támaszkodó nyilvános API-t régi/elhagyottnak. Új kódokhoz és a meglévő képfeldolgozó munkafolyamatok migrálásához használja a Modern API-t.
Modern API
A nyilvános API-hoz a következő osztályok és enumok lettek hozzáadva:
- Aspose::Slides::IImage – reprezentálja a raszteres vagy vektoriális képet.
- Aspose::Slides::ImageFormat – reprezentálja a kép fájlformátumát.
- Aspose::Slides::Images – metódusok az IImage interfész példányosításához és használatához.
Használja a GetImage metódust egyetlen dia vagy alakzat rendereléséhez. A GetImages metódus több prezentációs dia rendereléséhez szolgál. Használja a Images metódusait képek betöltéséhez, a AddImage-et IImage segítségével a prezentációhoz való hozzáadáshoz, valamint a ReplaceImage-et IImage használatával egy meglévő prezentációs kép frissítéséhez.
Egy tipikus szituáció az új API használatára a következő lehet:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
// példányosít egy eldobható IImage példányt a lemezen lévő fájlból.
System::SharedPtr<IImage> image = Images::FromFile(u"image.png");
// létrehoz egy PowerPoint képet az IImage példány prezentáció képekhez való hozzáadásával.
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
// képkocka alakzat hozzáadása az 1. diára
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
// lekéri az IImage példányt, amely az 1. diát képviseli.
auto slideImage = pres->get_Slide(0)->GetImage(System::Drawing::Size(1920, 1080));
// menti a képet a lemezre.
slideImage->Save(u"slide1.jpeg", Aspose::Slides::ImageFormat::Jpeg);
A régi kód Modern API-val való helyettesítése
Az átállás megkönnyítése érdekében az új IImage felülete megismétli a System::Drawing::Image és a System::Drawing::Bitmap osztályok különálló aláírásait. Általában csak a System::Drawing használatával írt régi metódushívást kell az újval felcserélni.
Dia előnézetének lekérése
Legacy/elavult 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");
Alakzat előnézetének lekérése
Legacy/elavult 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");
Prezentáció előnézetének lekérése
Legacy/elavult 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);
}
Kép hozzáadása a prezentációhoz
Legacy/elavult 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);
Elavult metódusok/tulajdonságok és azok Modern API helyettesítői
Presentation osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| 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 osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| 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 osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| GetThumbnail() | GetImage() |
| GetThumbnail(ShapeThumbnailBounds bounds, float scaleX, float scaleY) | GetImage(ShapeThumbnailBounds bounds, float scaleX, float scaleY) |
ImageCollection osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| AddImage(System::SharedPtr<System::Drawing::Image> image) | AddImage(System::SharedPtr<IImage> image) |
PPImage osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| ReplaceImage(System::SharedPtr<System::Drawing::Image> newImage) | ReplaceImage(System::SharedPtr<Aspose::Slides::IImage> newImage) |
| get_SystemImage() | get_Image() |
PatternFormat osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| 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 osztály
| Metódus aláírás | Helyettesítő metódus aláírás |
|---|---|
| GetTileImage(System::Drawing::Color background, System::Drawing::Color foreground) | GetTileIImage(System::Drawing::Color background, System::Drawing::Color foreground) |
API támogatás a System::Drawing::Graphics számára
A System::Drawing::Graphics használatával írt metódusok elavultak, és nincs közvetlen Modern API helyettesítőjük.
Használja a Modern API képrenderelő metódusait a System::Drawing::Graphics felé történő renderelés helyett:
- 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)
GYIK
Miért lett elhagyva a System::Drawing::Graphics?
A System::Drawing::Graphics támogatása elavult a nyilvános API-ban, hogy egységesítsük a renderelést és a képek kezelését, megszüntessük a platform‑specifikus függőségeket, és egy cross‑platform megközelítést alkalmazzunk az IImage segítségével. Használja a GetImage vagy GetImages metódusokat a System::Drawing::Graphics felé történő renderelés helyett.
Mi a gyakorlati előnye az IImage használatának a System::Drawing::Image/System::Drawing::Bitmap helyett?
Az IImage egységesíti a raszteres és vektoriális képek kezelését, egyszerűsíti a különböző formátumok mentését az ImageFormat segítségével, csökkenti a System::Drawing függőséget, és kódbázisát hordozhatóbbá teszi a különböző környezetek között.
A Modern API befolyásolja a bélyegképek generálásának teljesítményét?
A GetThumbnail‑ról GetImage‑re való átállás nem rontja a teljesítményt: az új metódusok ugyanazokat a lehetőségeket biztosítják a képek opciókkal és méretekkel történő előállításához, miközben megőrzik a renderelési opciók támogatását. A konkrét nyereség vagy veszteség a szituációtól függ, de funkcionálisan a helyettesítők ekvivalensek.