Tingkatkan Pemrosesan Gambar dengan API Modern

Pendahuluan

API publik Aspose.Slides for Python saat ini bergantung pada tipe aspose.pydrawing berikut:

  • aspose.pydrawing.Graphics
  • aspose.pydrawing.Image
  • aspose.pydrawing.Bitmap
  • aspose.pydrawing.printing.PrinterSettings

Mulai versi 24.4, API publik ini tidak lagi direkomendasikan karena perubahan pada API publik Aspose.Slides for Python.

Untuk menghilangkan aspose.pydrawing dari API publik, kami memperkenalkan API Modern. Metode yang menggunakan aspose.pydrawing.Image dan aspose.pydrawing.Bitmap tidak lagi direkomendasikan dan harus diganti dengan padanan API Modern mereka. Metode yang menggunakan aspose.pydrawing.Graphics tidak lagi direkomendasikan dan tidak memiliki pengganti langsung di API Modern.

Pada versi saat ini, perlakukan API publik yang bergantung pada aspose.pydrawing sebagai warisan/tidak direkomendasikan. Gunakan API Modern untuk kode baru dan saat memigrasikan alur kerja pemrosesan gambar yang ada.

API Modern

Kelas dan enum berikut telah ditambahkan ke API publik:

Gunakan get_image untuk merender satu slide atau bentuk. Gunakan get_images untuk merender beberapa slide presentasi. Gunakan metode Images untuk memuat gambar, add_image dengan IImage untuk menambahkannya ke presentasi, dan replace_image dengan IImage untuk memperbarui gambar presentasi yang sudah ada.

Skenario penggunaan tipikal untuk API baru terlihat seperti ini:

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)

Ganti Kode Lama dengan API Modern

Untuk transisi yang lebih mudah, kelas baru IImage mencerminkan API terpisah dari kelas aspose.pydrawing.Image dan aspose.pydrawing.Bitmap. Dalam kebanyakan kasus, Anda hanya perlu mengganti pemanggilan metode yang menggunakan aspose.pydrawing dengan padanan API Modern mereka.

Dapatkan Thumbnail Slide

Deprecated API:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]

    slide.get_thumbnail().save("slide1.png")

Modern 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")

Dapatkan Thumbnail Bentuk

Deprecated 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")

Modern 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")

Dapatkan Thumbnail Presentasi

Deprecated 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)

Modern 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)

Tambah Gambar ke Presentasi

Deprecated 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)

Modern 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)

Metode dan Properti yang Akan Dihapus serta Pengganti Modernnya

Presentation Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
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) Tidak ada pengganti API Modern
save(fname, format, options, response, show_inline) Tidak ada pengganti API Modern
print() Tidak ada pengganti API Modern
print(printer_settings) Tidak ada pengganti API Modern
print(printer_name) Tidak ada pengganti API Modern
print(printer_settings, pres_name) Tidak ada pengganti API Modern

Slide Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
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) Tidak ada pengganti API Modern
render_to_graphics(options, graphics, scale_x, scale_y) Tidak ada pengganti API Modern
render_to_graphics(options, graphics, rendering_size) Tidak ada pengganti API Modern

Shape Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

ImageCollection Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
add_image(image: aspose.pydrawing.Image) add_image(image)

PPImage Class

Tanda Tangan Metode/Properti Tanda Tangan Metode/Properti Pengganti
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

ImageWrapperFactory Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

PatternFormat Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

IPatternFormatEffectiveData Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Output Class

Tanda Tangan Metode Tanda Tangan Metode Pengganti
add(path, image: aspose.pydrawing.Image) add(path, image)

Dukungan API untuk aspose.pydrawing.Graphics

Metode yang menggunakan aspose.pydrawing.Graphics tidak lagi direkomendasikan dan tidak memiliki pengganti langsung di API Modern.

Gunakan metode rendering gambar API Modern alih-alih API yang merender ke 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

Mengapa aspose.pydrawing.Graphics dihilangkan?

Dukungan untuk aspose.pydrawing.Graphics tidak lagi direkomendasikan dalam API publik untuk menyatukan kerja dengan rendering dan gambar, menghilangkan ketergantungan pada platform tertentu, serta beralih ke pendekatan lintas platform dengan IImage. Gunakan get_image atau get_images alih-alih merender ke aspose.pydrawing.Graphics.

Apa manfaat praktis dari IImage dibandingkan aspose.pydrawing.Image/aspose.pydrawing.Bitmap?

IImage menyatukan kerja dengan gambar raster dan vektor, menyederhanakan penyimpanan ke berbagai format melalui ImageFormat, mengurangi ketergantungan pada pydrawing, dan membuat kode lebih portabel antar lingkungan.

Apakah API Modern memengaruhi kinerja pembuatan thumbnail?

Berpindah dari get_thumbnail ke get_image tidak memperburuk skenario: metode baru memberikan kemampuan yang sama untuk menghasilkan gambar dengan opsi dan ukuran, sambil tetap mendukung opsi rendering. Keuntungan atau penurunan spesifik tergantung pada skenario, tetapi secara fungsional pengganti tersebut setara.