Migliora l'elaborazione delle immagini con l'API moderna
Introduzione
Attualmente, la libreria Aspose.Slides per C++ ha dipendenze nella sua API pubblica dalle seguenti classi di System::Drawing:
A partire dalla versione 24.4, questa API pubblica è dichiarata obsoleta.
Per eliminare le dipendenze da System::Drawing nell’API pubblica, abbiamo aggiunto quella che viene chiamata “Modern API”. I metodi con System::Drawing::Image e System::Drawing::Bitmap sono dichiarati obsoleti e dovrebbero essere sostituiti con i corrispondenti metodi della Modern API. I metodi con System::Drawing::Graphics sono dichiarati obsoleti e non hanno una sostituzione diretta nella Modern API.
Nelle versioni attuali, considera l’API pubblica che dipende dai tipi System::Drawing come legacy/obsoleta. Usa la Modern API per nuovo codice e quando migri i flussi di lavoro di elaborazione immagini esistenti.
API moderna
Sono state aggiunte le seguenti classi ed enum all’API pubblica:
- Aspose::Slides::IImage - rappresenta l’immagine raster o vettoriale.
- Aspose::Slides::ImageFormat - rappresenta il formato file dell’immagine.
- Aspose::Slides::Images - metodi per istanziare e lavorare con l’interfaccia IImage.
Usa GetImage per renderizzare una singola diapositiva o forma. Usa GetImages per renderizzare più diapositive della presentazione. Usa i metodi di Images per caricare immagini, AddImage con IImage per aggiungerle a una presentazione, e ReplaceImage con IImage per aggiornare un’immagine esistente della presentazione.
Uno scenario tipico di utilizzo della nuova API può apparire come segue:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
// istanziare un'istanza di IImage eliminabile dal file su disco.
System::SharedPtr<IImage> image = Images::FromFile(u"image.png");
// creare un'immagine PowerPoint aggiungendo un'istanza di IImage alle immagini della presentazione.
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
// aggiungere una forma immagine nella diapositiva #1
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
// ottenere un'istanza di IImage che rappresenta la diapositiva #1.
auto slideImage = pres->get_Slide(0)->GetImage(System::Drawing::Size(1920, 1080));
// salvare l'immagine su disco.
slideImage->Save(u"slide1.jpeg", Aspose::Slides::ImageFormat::Jpeg);
Sostituire il vecchio codice con l’API moderna
Per facilitare la transizione, l’interfaccia del nuovo IImage ripete le firme separate delle classi System::Drawing::Image e System::Drawing::Bitmap. In generale, dovrai semplicemente sostituire la chiamata al vecchio metodo che utilizza System::Drawing con quella nuova.
Ottenere una miniatura della diapositiva
API legacy/obsoleta:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->GetThumbnail()->Save(u"slide1.png");
API moderna:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->GetImage()->Save(u"slide1.png");
Ottenere una miniatura della forma
API legacy/obsoleta:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->get_Shape(0)->GetThumbnail()->Save(u"shape.png");
API moderna:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
pres->get_Slide(0)->get_Shape(0)->GetImage()->Save(u"shape.png");
Ottenere una miniatura della presentazione
API legacy/obsoleta:
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());
}
API moderna:
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);
}
Aggiungere un’immagine a una presentazione
API legacy/obsoleta:
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);
API moderna:
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);
Metodi/Proprietà obsoleti e loro sostituzione nell’API moderna
Classe Presentation
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| 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 |
Classe Slide
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| 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 |
Classe Shape
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| GetThumbnail() | GetImage() |
| GetThumbnail(ShapeThumbnailBounds bounds, float scaleX, float scaleY) | GetImage(ShapeThumbnailBounds bounds, float scaleX, float scaleY) |
Classe ImageCollection
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| AddImage(System::SharedPtr<System::Drawing::Image> image) | AddImage(System::SharedPtr<IImage> image) |
Classe PPImage
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| ReplaceImage(System::SharedPtr<System::Drawing::Image> newImage) | ReplaceImage(System::SharedPtr<Aspose::Slides::IImage> newImage) |
| get_SystemImage() | get_Image() |
Classe PatternFormat
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| 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
| Firma del metodo | Firma del metodo di sostituzione |
|---|---|
| GetTileImage(System::Drawing::Color background, System::Drawing::Color foreground) | GetTileIImage(System::Drawing::Color background, System::Drawing::Color foreground) |
Supporto API per System::Drawing::Graphics
I metodi con System::Drawing::Graphics sono dichiarati obsoleti e non hanno una sostituzione diretta nella Modern API.
Usa i metodi di rendering immagini della Modern API invece dell’API che renderizza su 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
Perché è stata rimossa System::Drawing::Graphics?
Il supporto a System::Drawing::Graphics è obsoleto nell’API pubblica per uniformare il lavoro di rendering e immagini, eliminare i legami con dipendenze specifiche della piattaforma e passare a un approccio cross‑platform con IImage. Usa GetImage o GetImages invece di renderizzare su System::Drawing::Graphics.
Qual è il vantaggio pratico di IImage rispetto a System::Drawing::Image/System::Drawing::Bitmap?
IImage unifica la gestione di immagini raster e vettoriali, semplifica il salvataggio in vari formati tramite ImageFormat, riduce la dipendenza da System::Drawing e rende il codice più portabile tra ambienti.
L’API moderna influenzerà le prestazioni nella generazione delle miniature?
Il passaggio da GetThumbnail a GetImage non peggiora gli scenari: i nuovi metodi forniscono le stesse capacità per produrre immagini con opzioni e dimensioni, mantenendo il supporto per le opzioni di rendering. Il guadagno o la perdita specifica dipende dallo scenario, ma funzionalmente le sostituzioni sono equivalenti.