ปรับปรุงการประมวลผลภาพด้วย API สมัยใหม่
บทนำ
Historically, Aspose Slides มีการพึ่งพา java.awt และใน API สาธารณะมีคลาสต่อไปนี้จากนั้น:
ตั้งแต่เวอร์ชัน 24.4 API สาธารณะนี้ได้รับการประกาศว่าเลิกใช้งานแล้ว
เพื่อกำจัดการพึ่งพาเหล่านี้ เราได้เพิ่ม “Modern API” – คือ API ที่ควรใช้แทน API ที่เลิกใช้ ซึ่งลายเซ็นของมันไม่อ้างอิงถึง BufferedImage อีกต่อไป ส่วน Graphics2D ถูกประกาศว่าเลิกใช้และการสนับสนุนถูกลบออกจาก API สาธารณะของ Slides
ในเวอร์ชันปัจจุบัน ให้ถือว่า API สาธารณะที่พึ่งพา java.awt เป็น Legacy/Deprecated ใช้ Modern API สำหรับโค้ดใหม่และเมื่อย้ายเวิร์กโฟลว์การประมวลผลภาพที่มีอยู่
API สมัยใหม่
เพิ่มคลาสและ enum ต่อไปนี้ลงใน API สาธารณะ:
- IImage – แสดงถึงภาพ raster หรือ vector
- ImageFormat – แสดงถึงรูปแบบไฟล์ของภาพ
- Images – เมธอดสำหรับสร้างและทำงานกับคลาส IImage
โปรดทราบว่า IImage เป็น disposable (ควรทำการ dispose หลังการใช้งาน)
ใช้ getImage เพื่อเรนเดอร์สไลด์หรือรูปแบบเดียว ใช้ getImages เพื่อเรนเดอร์สไลด์หลายสไลด์ ใช้เมธอดของ Images เพื่อโหลดภาพ, addImage พร้อม IImage เพื่อเพิ่มลงในงานนำเสนอ, และ replaceImage พร้อม IImage เพื่ออัปเดตภาพในงานนำเสนอที่มีอยู่
สถานการณ์ทั่วไปของการใช้ API ใหม่อาจมีลักษณะดังต่อไปนี้:
use aspose\slides\Presentation;
use aspose\slides\ShapeType;
use aspose\slides\ImageFormat;
use aspose\slides\Images;
$pres = new Presentation();
# สร้างตัวอย่าง IImage ที่เป็น disposable จากไฟล์บนดิสก์.
$image = Images::fromFile("image.png");
# สร้างภาพ PowerPoint โดยเพิ่มตัวอย่าง IImage ลงใน collection ภาพของงานนำเสนอ.
$ppImage = $pres->getImages()->addImage($image);
$image->dispose();
# เพิ่มรูปร่างรูปภาพบนสไลด์ที่ 1
$pres->getSlides()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $ppImage);
$dimension = new Java("java.awt.Dimension", 1920, 1080);
# รับตัวอย่างของ IImage ที่แสดงสไลด์ที่ 1.
$slideImage = $pres->getSlides()->get_Item(0)->getImage($dimension);
# บันทึกภาพลงบนดิสก์.
$slideImage->save("slide1.jpeg", ImageFormat::Jpeg);
$slideImage->dispose();
$pres->dispose();
การแทนที่โค้ดเก่าด้วย API สมัยใหม่
โดยทั่วไป คุณจะต้องแทนที่การเรียกที่ใช้ BufferedImage และ ImageIO ด้วยเมธอดใหม่ที่ใช้ IImage
Legacy/deprecated API:
$dimension = new Java("java.awt.Dimension", 1920, 1080);
$slideImage = $pres->getSlides()->get_Item(0)->getThumbnail($dimension);
$imageio = new Java("javax.imageio.ImageIO");
$javafile = new Java("java.io.File", "image.png");
$imageio->write($slideImage, "PNG", $javafile);
Modern API:
$dimension = new Java("java.awt.Dimension", 1920, 1080);
$slideImage = $pres->getSlides()->get_Item(0)->getImage($dimension);
$slideImage->save("image.png", ImageFormat::Png);
$slideImage->dispose();
การรับ Thumbnail ของสไลด์
Legacy/deprecated API:
use aspose\slides\Presentation;
$pres = new Presentation("pres.pptx");
$slideImage = $pres->getSlides()->get_Item(0)->getThumbnail();
$imageio = new Java("javax.imageio.ImageIO");
$javafile = new Java("java.io.File", "slide1.png");
$imageio->write($slideImage, "PNG", $javafile);
$pres->dispose();
Modern API:
use aspose\slides\Presentation;
use aspose\slides\ImageFormat;
$pres = new Presentation("pres.pptx");
$slideImage = $pres->getSlides()->get_Item(0)->getImage();
$slideImage->save("slide1.png", ImageFormat::Png);
$slideImage->dispose();
$pres->dispose();
การรับ Thumbnail ของรูปร่าง
Legacy/deprecated API:
use aspose\slides\Presentation;
$pres = new Presentation("pres.pptx");
$shapeImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getThumbnail();
$imageio = new Java("javax.imageio.ImageIO");
$javafile = new Java("java.io.File", "shape.png");
$imageio->write($shapeImage, "PNG", $javafile);
$pres->dispose();
Modern API:
use aspose\slides\Presentation;
use aspose\slides\ImageFormat;
$pres = new Presentation("pres.pptx");
$shapeImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage();
$shapeImage->save("shape.png");
$shapeImage->dispose();
$pres->dispose();
การรับ Thumbnail ของงานนำเสนอ
Legacy/deprecated API:
use aspose\slides\Presentation;
use aspose\slides\RenderingOptions;
$pres = new Presentation("pres.pptx");
$renderingOptions = new RenderingOptions();
$dimension = new Java("java.awt.Dimension", 1920, 1080);
$bitmaps = $pres->getThumbnails($renderingOptions, $dimension);
for ($i = 0; $i < count(java_values($bitmaps)); $i++)
{
$thumbnail = $bitmaps[$i];
$imageio = new Java("javax.imageio.ImageIO");
$javafile = new Java("java.io.File", "slide" . $i . ".png");
$imageio->write($thumbnail, "PNG", $javafile);
}
$pres->dispose();
Modern API:
use aspose\slides\Presentation;
use aspose\slides\ImageFormat;
use aspose\slides\RenderingOptions;
$pres = new Presentation("pres.pptx");
$renderingOptions = new RenderingOptions();
$dimension = new Java("java.awt.Dimension", 1920, 1080);
$images = $pres->getImages($renderingOptions, $dimension);
for ($i = 0; $i < count(java_values($images)); $i++)
{
$thumbnail = $images[$i];
$thumbnail->save("slide" . $i . ".png", ImageFormat::Png);
}
$pres->dispose();
การเพิ่มรูปภาพลงในงานนำเสนอ
Legacy/deprecated API:
use aspose\slides\Presentation;
use aspose\slides\ShapeType;
$pres = new Presentation();
$imageio = new Java("javax.imageio.ImageIO");
$javafile = new Java("java.io.File", "image.png");
$bufferedImages = $imageio->read($javafile);
$ppImage = $pres->getImages()->addImage($bufferedImages);
$pres->getSlides()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $ppImage);
$pres->dispose();
Modern API:
use aspose\slides\Presentation;
use aspose\slides\Images;
use aspose\slides\ShapeType;
$pres = new Presentation();
$image = Images::fromFile("image.png");
$ppImage = $pres->getImages()->addImage($image);
$image->dispose();
$pres->getSlides()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $ppImage);
$pres->dispose();
เมธอดที่เลิกใช้และการแทนที่ใน Modern API
Presentation
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final BufferedImage[] getThumbnails(IRenderingOptions options) | public final IImage[] getImages(IRenderingOptions options) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, float scaleX, float scaleY) | public final IImage[] getImages(IRenderingOptions options, float scaleX, float scaleY) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides) | public final IImage[] getImages(IRenderingOptions options, int[] slides) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides, float scaleX, float scaleY) | public final IImage[] getImages(IRenderingOptions options, int[] slides, float scaleX, float scaleY) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides, Dimension imageSize) | public final IImage[] getImages(IRenderingOptions options, int[] slides, Dimension imageSize) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, Dimension imageSize) | public final IImage[] getImages(IRenderingOptions options, Dimension imageSize) |
Shape
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final BufferedImage getThumbnail() | public final IImage getImage() |
| public final BufferedImage getThumbnail(int bounds, float scaleX, float scaleY) | public final IImage getImage(int bounds, float scaleX, float scaleY) |
Slide
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final BufferedImage getThumbnail() | public final IImage getImage() |
| public final BufferedImage getThumbnail(float scaleX, float scaleY) | public final IImage getImage(float scaleX, float scaleY) |
| public final BufferedImage getThumbnail(IRenderingOptions options) | public final IImage getImage(IRenderingOptions options) |
| public final BufferedImage getThumbnail(IRenderingOptions options, float scaleX, float scaleY) | public final IImage getImage(IRenderingOptions options) |
| public final BufferedImage getThumbnail(IRenderingOptions options, Dimension imageSize) | public final IImage getImage(IRenderingOptions options, Dimension imageSize) |
| public final BufferedImage getThumbnail(ITiffOptions options) | public final IImage getImage(ITiffOptions options) |
| public final BufferedImage getThumbnail(Dimension imageSize) | public final IImage getImage(Dimension imageSize) |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics) | No Modern API replacement |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, float scaleX, float scaleY) | No Modern API replacement |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, Dimension renderingSize) | No Modern API replacement |
Output
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final IOutputFile add(String path, BufferedImage image) | public final IOutputFile add(String path, IImage image) |
ImageCollection
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final IPPImage addImage(BufferedImage image) | public final IPPImage addImage(IImage image) |
PPImage
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final BufferedImage getSystemImage() | public final IImage getImage() |
PatternFormat
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final BufferedImage getTileImage(Color styleColor) | public final IImage getTile(Color styleColor) |
| public final BufferedImage getTileImage(Color background, Color foreground) | public final IImage getTile(Color background, Color foreground) |
PatternFormatEffectiveData
| Signature ของเมธอด | Signature ของเมธอดทดแทน |
|---|---|
| public final java.awt.image.BufferedImage getTileImage(Color background, Color foreground) | public final IImage getTileIImage(Color background, Color foreground) |
การสนับสนุน API สำหรับ Graphics2D
เมธอดที่ใช้ Graphics2D ถูกประกาศว่าเลิกใช้และไม่มีการแทนที่โดยตรงใน Modern API
ใช้เมธอดการเรนเดอร์ภาพของ Modern API แทน API ที่เรนเดอร์ไปยัง Graphics2D:
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics)
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, float scaleX, float scaleY)
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, Dimension renderingSize)
FAQ
ทำไมถึงลบ Graphics2D ออก?
การสนับสนุน Graphics2D ถูกเลิกใช้ใน API สาธารณะเพื่อรวมการทำงานกับการเรนเดอร์และภาพ, กำจัดการเชื่อมโยงกับการพึ่งพาแพลตฟอร์มเฉพาะ, และเปลี่ยนไปใช้วิธีการข้ามแพลตฟอร์มกับ IImage. ใช้ getImage หรือ getImages แทนการเรนเดอร์ไปยัง Graphics2D.
ประโยชน์เชิงปฏิบัติของ IImage เทียบกับ BufferedImage คืออะไร?
IImage รวมการทำงานกับภาพ raster และ vector ไว้ในตัวเดียวและทำให้การบันทึกเป็นรูปแบบต่าง ๆ ง่ายขึ้นผ่าน ImageFormat.
Modern API จะส่งผลต่อประสิทธิภาพการสร้าง thumbnail หรือไม่?
การเปลี่ยนจาก getThumbnail ไปเป็น getImage ไม่ทำให้สถานการณ์แย่ลง: เมธอดใหม่ให้ความสามารถเดียวกันในการผลิตภาพพร้อมตัวเลือกและขนาด, พร้อมยังคงสนับสนุนตัวเลือกการเรนเดอร์. ผลลัพธ์ด้านประสิทธิภาพขึ้นอยู่กับสถานการณ์, แต่ในเชิงฟังก์ชันการแทนที่เทียบเท่ากัน.