Améliorer le traitement d'images avec l'API Moderne
Introduction
Actuellement, la bibliothèque Aspose.Slides for C++ possède des dépendances dans son API publique aux classes suivantes de System::Drawing :
Depuis la version 24.4, cette API publique est déclarée obsolète.
Afin d’éliminer les dépendances à System::Drawing dans l’API publique, nous avons ajouté ce que l’on appelle l’« Modern API ». Les méthodes utilisant System::Drawing::Image et System::Drawing::Bitmap sont déclarées obsolètes et doivent être remplacées par les méthodes correspondantes de la Modern API. Les méthodes utilisant System::Drawing::Graphics sont déclarées obsolètes et ne possèdent aucun équivalent direct dans la Modern API.
Dans les versions actuelles, considérez l’API publique qui dépend des types System::Drawing comme héritée/obsolète. Utilisez la Modern API pour les nouveaux développements et lors de la migration des flux de traitement d’image existants.
Modern API
Ajout des classes et énumérations suivantes à l’API publique :
- Aspose::Slides::IImage - représente l’image raster ou vectorielle.
- Aspose::Slides::ImageFormat - représente le format de fichier de l’image.
- Aspose::Slides::Images - méthodes pour instancier et travailler avec l’interface IImage.
Utilisez GetImage pour rendre une seule diapositive ou forme. Utilisez GetImages pour rendre plusieurs diapositives d’une présentation. Utilisez les méthodes de Images pour charger des images, AddImage avec IImage pour les ajouter à une présentation, et ReplaceImage avec IImage pour mettre à jour une image existante d’une présentation.
Un scénario typique d’utilisation de la nouvelle API peut ressembler à ce qui suit :
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
// instancier une instance jetable d'IImage depuis le fichier sur le disque.
System::SharedPtr<IImage> image = Images::FromFile(u"image.png");
// créer une image PowerPoint en ajoutant une instance d'IImage aux images de la présentation.
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
// ajouter une forme image sur la diapositive #1
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
// obtenir une instance de IImage représentant la diapositive #1.
auto slideImage = pres->get_Slide(0)->GetImage(System::Drawing::Size(1920, 1080));
// enregistrer l'image sur le disque.
slideImage->Save(u"slide1.jpeg", Aspose::Slides::ImageFormat::Jpeg);
Remplacement du code ancien par la Modern API
Pour faciliter la transition, l’interface du nouveau IImage reprend les signatures distinctes des classes System::Drawing::Image et System::Drawing::Bitmap. En général, il vous suffit de remplacer l’appel à l’ancienne méthode utilisant System::Drawing par le nouveau.
Obtention d’une vignette de diapositive
API héritée / obsolète :
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");
Obtention d’une vignette de forme
API héritée / obsolète :
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");
Obtention d’une vignette de présentation
API héritée / obsolète :
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);
}
Ajout d’une image à une présentation
API héritée / obsolète :
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);
Méthodes/Propriétés obsolètes et leurs remplacements dans la Modern API
Classe Presentation
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| 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) | Pas de remplacement dans la Modern API |
| Save(System::String fname, System::ArrayPtr<int32_t> slides, Export::SaveFormat format, System::SharedPtr<Export::ISaveOptions> options) | Pas de remplacement dans la Modern API |
Classe Slide
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| 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) | Pas de remplacement dans la Modern API |
| RenderToGraphics(System::SharedPtr<Export::IRenderingOptions> options, System::SharedPtr<System::Drawing::Graphics> graphics, float scaleX, float scaleY) | Pas de remplacement dans la Modern API |
| RenderToGraphics(System::SharedPtr<Export::IRenderingOptions> options, System::SharedPtr<System::Drawing::Graphics> graphics, System::Drawing::Size renderingSize) | Pas de remplacement dans la Modern API |
Classe Shape
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| GetThumbnail() | GetImage() |
| GetThumbnail(ShapeThumbnailBounds bounds, float scaleX, float scaleY) | GetImage(ShapeThumbnailBounds bounds, float scaleX, float scaleY) |
Classe ImageCollection
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| AddImage(System::SharedPtr<System::Drawing::Image> image) | AddImage(System::SharedPtr<IImage> image) |
Classe PPImage
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| ReplaceImage(System::SharedPtr<System::Drawing::Image> newImage) | ReplaceImage(System::SharedPtr<Aspose::Slides::IImage> newImage) |
| get_SystemImage() | get_Image() |
Classe PatternFormat
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| 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) |
Classe IPatternFormatEffectiveData
| Signature de méthode | Signature de méthode de remplacement |
|---|---|
| GetTileImage(System::Drawing::Color background, System::Drawing::Color foreground) | GetTileIImage(System::Drawing::Color background, System::Drawing::Color foreground) |
Support API pour System::Drawing::Graphics
Les méthodes avec System::Drawing::Graphics sont déclarées obsolètes et n’ont aucun remplacement direct dans la Modern API.
Utilisez les méthodes de rendu d’image de la Modern API à la place de l’API qui rend vers 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
Pourquoi System::Drawing::Graphics a-t-il été retiré ?
Le support de System::Drawing::Graphics est obsolète dans l’API publique afin d’unifier le travail de rendu et d’images, d’éliminer les dépendances spécifiques à une plateforme et de passer à une approche multiplateforme avec IImage. Utilisez GetImage ou GetImages au lieu de rendre vers System::Drawing::Graphics.
Quel est l’avantage pratique de IImage par rapport à System::Drawing::Image/System::Drawing::Bitmap?
IImage unifie le travail avec les images raster et vectorielles, simplifie l’enregistrement dans différents formats via ImageFormat, réduit la dépendance à System::Drawing et rend le code plus portable entre les environnements.
La Modern API affectera-t-elle les performances de génération de vignettes ?
Passer de GetThumbnail à GetImage n’aggrave pas les scénarios : les nouvelles méthodes offrent les mêmes capacités de production d’images avec options et tailles, tout en conservant le support des options de rendu. Le gain ou la perte spécifique dépend du scénario, mais fonctionnellement les remplacements sont équivalents.