Ulepsz przetwarzanie obrazów przy użyciu nowoczesnego API
Wstęp
Publiczne API Aspose.Slides for Python obecnie zależy od następujących typów aspose.pydrawing:
aspose.pydrawing.Graphicsaspose.pydrawing.Imageaspose.pydrawing.Bitmapaspose.pydrawing.printing.PrinterSettings
Od wersji 24.4 to publiczne API jest przestarzałe z powodu zmian w publicznym API Aspose.Slides for Python.
Aby wyeliminować aspose.pydrawing z publicznego API, wprowadziliśmy Nowoczesne API. Metody używające aspose.pydrawing.Image i aspose.pydrawing.Bitmap są przestarzałe i powinny zostać zastąpione ich odpowiednikami w Nowoczesnym API. Metody używające aspose.pydrawing.Graphics są przestarzałe i nie mają bezpośredniego zamiennika w Nowoczesnym API.
W bieżących wersjach traktuj publiczne API zależne od aspose.pydrawing jako dziedzictwo/przestarzałe. Używaj Nowoczesnego API w nowym kodzie oraz przy migracji istniejących przepływów przetwarzania obrazów.
Nowoczesne API
Do publicznego API dodano następujące klasy i wyliczenia:
- aspose.slides.IImage - reprezentuje obraz rastrowy lub wektorowy.
- aspose.slides.ImageFormat - reprezentuje format pliku obrazu.
- aspose.slides.Images - udostępnia metody do tworzenia i pracy z IImage.
Użyj get_image, aby wyrenderować pojedynczy slajd lub kształt. Użyj get_images, aby wyrenderować kilka slajdów prezentacji. Użyj metod Images do ładowania obrazów, add_image z IImage aby dodać je do prezentacji oraz replace_image z IImage aby zaktualizować istniejący obraz w prezentacji.
Typowy scenariusz użycia nowego API wygląda następująco:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with slides.Images.from_file("image.png") as image:
pp_image = presentation.images.add_image(image)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, pp_image)
with slide.get_image(drawing.Size(1920, 1080)) as slide_image:
slide_image.save("slide1.jpeg", slides.ImageFormat.JPEG)
Zastąp stary kod nowoczesnym API
Aby ułatwić przejście, nowa klasa IImage odzwierciedla odrębne API klas aspose.pydrawing.Image i aspose.pydrawing.Bitmap. W większości przypadków wystarczy zamienić wywołania metod używających aspose.pydrawing na ich odpowiedniki w Nowoczesnym API.
Pobierz miniaturę slajdu
Przestarzałe API:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
slide.get_thumbnail().save("slide1.png")
Nowoczesne API:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
with slide.get_image() as image:
image.save("slide1.png")
Pobierz miniaturę kształtu
Przestarzałe API:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
shape.get_thumbnail().save("shape.png")
Nowoczesne API:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
with shape.get_image() as image:
image.save("shape.png")
Pobierz miniaturę prezentacji
Przestarzałe API:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation("sample.pptx") as presentation:
thumbnails = presentation.get_thumbnails(slides.export.RenderingOptions(), drawing.Size(1980, 1028))
for index, thumbnail in enumerate(thumbnails):
thumbnail.save(f"slide_{index}.png", drawing.imaging.ImageFormat.png)
Nowoczesne API:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation("sample.pptx") as presentation:
thumbnails = presentation.get_images(slides.export.RenderingOptions(), drawing.Size(1980, 1028))
for index, thumbnail in enumerate(thumbnails):
thumbnail.save(f"slide_{index}.png", slides.ImageFormat.PNG)
Dodaj obraz do prezentacji
Przestarzałe API:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation() as presentation:
slide = presentation.slides[0]
image = drawing.Image.from_file("image.png")
pp_image = presentation.images.add_image(image)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, pp_image)
Nowoczesne API:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with slides.Images.from_file("image.png") as image:
pp_image = presentation.images.add_image(image)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, pp_image)
Metody i właściwości do usunięcia oraz ich nowoczesne zamienniki
Klasa Presentation
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| get_thumbnails(options) | get_images(options) |
| get_thumbnails(options, slides) | get_images(options, slides) |
| get_thumbnails(options, scale_x, scale_y) | get_images(options, scale_x, scale_y) |
| get_thumbnails(options, slides, scale_x, scale_y) | get_images(options, slides, scale_x, scale_y) |
| get_thumbnails(options, image_size) | get_images(options, image_size) |
| get_thumbnails(options, slides, image_size) | get_images(options, slides, image_size) |
| save(fname, format, response, show_inline) | No Modern API replacement |
| save(fname, format, options, response, show_inline) | No Modern API replacement |
| print() | No Modern API replacement |
| print(printer_settings) | No Modern API replacement |
| print(printer_name) | No Modern API replacement |
| print(printer_settings, pres_name) | No Modern API replacement |
Klasa Slide
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| get_thumbnail() | get_image() |
| get_thumbnail(scale_x, scale_y) | get_image(scale_x, scale_y) |
| get_thumbnail(image_size) | get_image(image_size) |
| get_thumbnail(options) | get_image(options: ITiffOptions) |
| get_thumbnail(options) | get_image(options: IRenderingOptions) |
| get_thumbnail(options, scale_x, scale_y) | get_image(options, scale_x, scale_y) |
| get_thumbnail(options, image_size) | get_image(options, image_size) |
| render_to_graphics(options, graphics) | No Modern API replacement |
| render_to_graphics(options, graphics, scale_x, scale_y) | No Modern API replacement |
| render_to_graphics(options, graphics, rendering_size) | No Modern API replacement |
Klasa Shape
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| get_thumbnail() | get_image() |
| get_thumbnail(bounds, scale_x, scale_y) | get_image(bounds, scale_x, scale_y) |
Klasa ImageCollection
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| add_image(image: aspose.pydrawing.Image) | add_image(image) |
Klasa PPImage
| Sygnatura metody/właściwości | Zastępcza sygnatura metody/właściwości |
|---|---|
| replace_image(new_image: aspose.pydrawing.Image) | replace_image(new_image) |
| system_image | image |
Klasa ImageWrapperFactory
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| create_image_wrapper(image: aspose.pydrawing.Image) | create_image_wrapper(image) |
Klasa PatternFormat
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| get_tile_image(background, foreground) | get_tile(background, foreground) |
| get_tile_image(style_color) | get_tile(style_color) |
Klasa IPatternFormatEffectiveData
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| get_tile_image(background, foreground) | get_tile_i_image(background, foreground) |
Klasa Output
| Sygnatura metody | Zastępcza sygnatura metody |
|---|---|
| add(path, image: aspose.pydrawing.Image) | add(path, image) |
Obsługa API dla aspose.pydrawing.Graphics
Metody używające aspose.pydrawing.Graphics są przestarzałe i nie mają bezpośredniego zamiennika w Nowoczesnym API.
Użyj metod renderujących obrazy w Nowoczesnym API zamiast API renderującego do aspose.pydrawing.Graphics:
aspose.pydrawing.Slide.render_to_graphics(options, graphics)aspose.pydrawing.Slide.render_to_graphics(options, graphics, scale_x, scale_y)aspose.pydrawing.Slide.render_to_graphics(options, graphics, rendering_size)
FAQ
Dlaczego aspose.pydrawing.Graphics został usunięty?
Obsługa aspose.pydrawing.Graphics jest przestarzała w publicznym API, aby ujednolicić pracę z renderowaniem i obrazami, wyeliminować zależności od specyficznych platform oraz przejść na podejście wieloplatformowe z IImage. Użyj get_image lub get_images zamiast renderowania do aspose.pydrawing.Graphics.
Jaka jest praktyczna korzyść z IImage w porównaniu do aspose.pydrawing.Image/aspose.pydrawing.Bitmap?
IImage ujednolica pracę zarówno z obrazami rastrowymi, jak i wektorowymi, upraszcza zapisywanie w różnych formatach za pomocą ImageFormat, zmniejsza zależność od pydrawing i sprawia, że kod jest bardziej przenośny między środowiskami.
Czy nowoczesne API wpłynie na wydajność generowania miniatur?
Przejście z get_thumbnail na get_image nie pogarsza scenariuszy: nowe metody zapewniają te same możliwości tworzenia obrazów z opcjami i rozmiarami, zachowując wsparcie dla opcji renderowania. Konkretne zyski lub straty zależą od scenariusza, ale funkcjonalnie zamienniki są równoważne.