Meningkatkan Pemrosesan Gambar dengan API Modern
Pendahuluan
Saat ini, pustaka Aspose.Slides untuk C++ memiliki ketergantungan dalam API publiknya pada kelas-kelas berikut dari System::Drawing:
Mulai versi 24.4, API publik ini dinyatakan usang.
Untuk menghilangkan ketergantungan pada System::Drawing dalam API publik, kami menambahkan apa yang disebut “Modern API”. Metode dengan System::Drawing::Image dan System::Drawing::Bitmap dinyatakan usang dan harus diganti dengan metode yang bersesuaian dari Modern API. Metode dengan System::Drawing::Graphics dinyatakan usang dan tidak memiliki pengganti Modern API secara langsung.
Dalam versi saat ini, perlakukan API publik yang bergantung pada tipe System::Drawing sebagai warisan/usang. Gunakan Modern API untuk kode baru dan ketika memigrasikan alur kerja pemrosesan gambar yang ada.
Modern API
Ditambahkan kelas dan enumerasi berikut ke API publik:
- Aspose::Slides::IImage - mewakili gambar raster atau vektor.
- Aspose::Slides::ImageFormat - mewakili format berkas gambar.
- Aspose::Slides::Images - metode untuk membuat instance dan bekerja dengan antarmuka IImage.
Gunakan GetImage untuk merender satu slide atau bentuk. Gunakan GetImages untuk merender beberapa slide presentasi. Gunakan metode Images untuk memuat gambar, AddImage dengan IImage untuk menambahkannya ke presentasi, dan ReplaceImage dengan IImage untuk memperbarui gambar presentasi yang ada.
Skenario tipikal penggunaan API baru dapat terlihat seperti berikut:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
// instansiasi objek IImage yang dapat dibuang dari berkas di disk.
System::SharedPtr<IImage> image = Images::FromFile(u"image.png");
// buat gambar PowerPoint dengan menambahkan instance IImage ke gambar presentasi.
System::SharedPtr<IPPImage> ppImage = pres->get_Images()->AddImage(image);
// tambahkan bentuk gambar pada slide #1
pres->get_Slide(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 100.0f, ppImage);
// dapatkan instance IImage yang mewakili slide #1.
auto slideImage = pres->get_Slide(0)->GetImage(System::Drawing::Size(1920, 1080));
// simpan gambar ke disk.
slideImage->Save(u"slide1.jpeg", Aspose::Slides::ImageFormat::Jpeg);
Mengganti Kode Lama dengan Modern API
Untuk memudahkan transisi, antarmuka dari IImage yang baru mengulangi tanda tangan terpisah dari kelas System::Drawing::Image dan System::Drawing::Bitmap. Secara umum, Anda hanya perlu mengganti panggilan ke metode lama yang menggunakan System::Drawing dengan yang baru.
Mendapatkan Thumbnail Slide
API warisan/usang:
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");
Mendapatkan Thumbnail Bentuk
API warisan/usang:
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");
Mendapatkan Thumbnail Presentasi
API warisan/usang:
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);
}
Menambahkan Gambar ke Presentasi
API warisan/usang:
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);
Metode/Properti Usang dan Penggantinya di Modern API
Kelas Presentation
| Signature Metode | Signature Metode Pengganti |
|---|---|
| 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 |
Kelas Slide
| Signature Metode | Signature Metode Pengganti |
|---|---|
| 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 |
Kelas Shape
| Signature Metode | Signature Metode Pengganti |
|---|---|
| GetThumbnail() | GetImage() |
| GetThumbnail(ShapeThumbnailBounds bounds, float scaleX, float scaleY) | GetImage(ShapeThumbnailBounds bounds, float scaleX, float scaleY) |
Kelas ImageCollection
| Signature Metode | Signature Metode Pengganti |
|---|---|
| AddImage(System::SharedPtr<System::Drawing::Image> image) | AddImage(System::SharedPtr<IImage> image) |
Kelas PPImage
| Signature Metode | Signature Metode Pengganti |
|---|---|
| ReplaceImage(System::SharedPtr<System::Drawing::Image> newImage) | ReplaceImage(System::SharedPtr<Aspose::Slides::IImage> newImage) |
| get_SystemImage() | get_Image() |
Kelas PatternFormat
| Signature Metode | Signature Metode Pengganti |
|---|---|
| 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) |
Kelas IPatternFormatEffectiveData
| Signature Metode | Signature Metode Pengganti |
|---|---|
| GetTileImage(System::Drawing::Color background, System::Drawing::Color foreground) | GetTileIImage(System::Drawing::Color background, System::Drawing::Color foreground) |
Dukungan API untuk System::Drawing::Graphics
Metode dengan System::Drawing::Graphics dinyatakan usang dan tidak memiliki pengganti Modern API secara langsung.
Gunakan metode rendering gambar Modern API sebagai gantinya API yang merender ke 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
Mengapa System::Drawing::Graphics dihapus?
Dukungan untuk System::Drawing::Graphics dinyatakan usang dalam API publik untuk menyatukan pekerjaan rendering dan gambar, menghilangkan ketergantungan pada platform tertentu, dan beralih ke pendekatan lintas platform dengan IImage. Gunakan GetImage atau GetImages alih-alih merender ke System::Drawing::Graphics.
Apa manfaat praktis IImage dibandingkan System::Drawing::Image/System::Drawing::Bitmap?
IImage menyatukan kerja dengan gambar raster dan vektor, menyederhanakan penyimpanan ke berbagai format melalui ImageFormat, mengurangi ketergantungan pada System::Drawing, dan membuat kode lebih portabel di berbagai lingkungan.
Apakah Modern API akan memengaruhi kinerja pembuatan thumbnail?
Berpindah dari GetThumbnail ke GetImage tidak memperburuk skenario: metode baru memberikan kemampuan yang sama untuk menghasilkan gambar dengan opsi dan ukuran, sambil mempertahankan dukungan untuk opsi rendering. Keuntungan atau penurunan spesifik tergantung pada skenario, namun secara fungsional penggantinya setara.