PHP का उपयोग करके प्रस्तुतियों में छवि प्रबंधन को अनुकूलित करें

परिचय

छवियाँ प्रस्तुतियों को अधिक आकर्षक और रोचक बनाती हैं। Microsoft PowerPoint में, आप फ़ाइल, इंटरनेट या अन्य स्थानों से चित्रों को स्लाइड्स पर डाल सकते हैं। इसी प्रकार, Aspose.Slides आपको विभिन्न प्रक्रियाओं के माध्यम से आपके प्रस्तुतियों की स्लाइड्स में छवियां जोड़ने की अनुमति देता है।

Aspose.Slides इन लोकप्रिय फ़ॉर्मेट्स में छवियों के साथ ऑपरेशन्स को सपोर्ट करता है: JPEG, PNG, GIF, और अन्य।

स्थानीय रूप से संग्रहीत छवियों को स्लाइड्स में जोड़ें

आप अपने कंप्यूटर की एक या कई छवियों को प्रस्तुति की स्लाइड पर जोड़ सकते हैं। यह नमूना कोड आपको दिखाता है कि एक छवि को स्लाइड में कैसे जोड़ें:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $picture;
    $image = Images->fromFile("image.png");
    try {
      $picture = $pres->getImages()->addImage($image);
    } finally {
      if (!java_is_null($image)) {
        $image->dispose();
      }
    }
    $slide->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $picture);
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

वेब से छवियों को स्लाइड्स में जोड़ें

यदि वह छवि जो आप स्लाइड में जोड़ना चाहते हैं आपके कंप्यूटर पर उपलब्ध नहीं है, तो आप इसे सीधे वेब से जोड़ सकते हैं।

यह नमूना कोड आपको दिखाता है कि वेब से छवि को स्लाइड में कैसे जोड़ें:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $imageUrl = new URL("[REPLACE WITH URL]");
    $connection = $imageUrl->openConnection();
    $inputStream = $connection->getInputStream();
    $outputStream = new Java("java.io.ByteArrayOutputStream");
    $Array = new java_class("java.lang.reflect.Array");
    $Byte = new JavaClass("java.lang.Byte");
    try {
      $buffer = $Array->newInstance($Byte, 1024);
      $read;
      while ($read = $inputStream->read($buffer, 0, $Array->getLength($buffer)) != -1) {
        $outputStream->write($buffer, 0, $read);
      } 
      $outputStream->flush();
      $image = $pres->getImages()->addImage($outputStream->toByteArray());
      $slide->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $image);
    } finally {
      if (!java_is_null($inputStream)) {
        $inputStream->close();
      }
      $outputStream->close();
    }
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

स्लाइड मास्टर्स में छवियों को जोड़ें

स्लाइड मास्टर वह शीर्ष स्लाइड है जो इसके नीचे सभी स्लाइड्स की जानकारी (थीम, लेआउट, आदि) संग्रहीत और नियंत्रित करता है। इसलिए, जब आप स्लाइड मास्टर में एक छवि जोड़ते हैं, वह छवि उस स्लाइड मास्टर के तहत सभी स्लाइड्स पर दिखाई देती है।

यह Java नमूना कोड आपको दिखाता है कि स्लाइड मास्टर में छवि कैसे जोड़ें:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $masterSlide = $slide->getLayoutSlide()->getMasterSlide();
    $picture;
    $image = Images->fromFile("image.png");
    try {
      $picture = $pres->getImages()->addImage($image);
    } finally {
      if (!java_is_null($image)) {
        $image->dispose();
      }
    }
    $masterSlide->getShapes()->addPictureFrame(ShapeType::Rectangle, 10, 10, 100, 100, $picture);
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

स्लाइड पृष्ठभूमि के रूप में छवियों को जोड़ें

आप एक विशिष्ट स्लाइड या कई स्लाइड्स की पृष्ठभूमि के रूप में चित्र का उपयोग करने का निर्णय ले सकते हैं। ऐसी स्थिति में, आपको देखना होगा कि Set an Image as a Slide Background कैसे करें।

प्रस्तुतियों में SVG जोड़ें

आप किसी भी छवि को प्रस्तुति में जोड़ या सम्मिलित कर सकते हैं, इसके लिए आप addPictureFrame मेथड का उपयोग कर सकते हैं जो ShapeCollection क्लास का हिस्सा है।

SVG छवि के आधार पर एक इमेज ऑब्जेक्ट बनाने के लिए, आप इसे इस प्रकार कर सकते हैं:

  1. SvgImage ऑब्जेक्ट बनाएं और इसे ImageShapeCollection में डालें
  2. ISvgImage से PPImage ऑब्जेक्ट बनाएं
  3. PPImage क्लास का उपयोग करके PictureFrame ऑब्जेक्ट बनाएं

यह नमूना कोड आपको दिखाता है कि ऊपर वर्णित कदमों को लागू करके SVG छवि को प्रस्तुति में कैसे जोड़ें:

  # PPTX फ़ाइल का प्रतिनिधित्व करने वाली Presentation क्लास का उदाहरण बनाएं
  $pres = new Presentation();
  try {
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = (new JavaClass("java.lang.Byte"))->TYPE;
try {
    $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "image.svg"));
    $bytes = $Array->newInstance($Byte, $dis->available());
    $dis->readFully($bytes);
} finally {
    if (!java_is_null($dis)) $dis->close();
}
    $svgContent = new String($bytes);

    $svgImage = new SvgImage($svgContent);
    $ppImage = $pres->getImages()->addImage($svgImage);
    $pres->getSlides()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 0, 0, $ppImage->getWidth(), $ppImage->getHeight(), $ppImage);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

SVG को आकारों के सेट में बदलें

Aspose.Slides' conversion of SVG to a set of shapes is similar to the PowerPoint functionality used to work with SVG images:

PowerPoint Popup Menu

The functionality is provided by one of the overloads of the addGroupShape method of the ShapeCollection class that takes an SvgImage object as the first argument.

This sample code shows you how to use the described method to convert an SVG file to a set of shapes:

  # नई प्रस्तुति बनाएं
  $presentation = new Presentation();
  try {
    # SVG फ़ाइल सामग्री पढ़ें
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = (new JavaClass("java.lang.Byte"))->TYPE;
try {
    $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "image.svg"));
    $bytes = $Array->newInstance($Byte, $dis->available());
    $dis->readFully($bytes);
} finally {
    if (!java_is_null($dis)) $dis->close();
}
    $svgContent = $bytes;

    # SvgImage ऑब्जेक्ट बनाएं
    $svgImage = new SvgImage($svgContent);
    # स्लाइड आकार प्राप्त करें
    $slideSize = $presentation->getSlideSize()->getSize();
    # SVG छवि को आकारों के समूह में बदलें और स्लाइड आकार के अनुसार स्केल करें
    $presentation->getSlides()->get_Item(0)->getShapes()->addGroupShape($svgImage, 0.0, 0.0, $slideSize->getWidth(), $slideSize->getHeight());
    # प्रस्तुति को PPTX फ़ॉर्मेट में सहेजें
    $presentation->save("output.pptx", SaveFormat::Pptx);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($presentation)) {
      $presentation->dispose();
    }
  }

स्लाइड्स में EMF के रूप में छवियों को जोड़ें

Aspose.Slides for PHP via Java आपको Excel शीट्स से EMF छवियाँ उत्पन्न करने और उन्हें Aspose.Cells के साथ स्लाइड्स में EMF के रूप में जोड़ने की अनुमति देता है।

This sample code shows you how to perform the described task:

  $book = new Workbook("chart.xlsx");
  $sheet = $book->getWorksheets()->get(0);
  $options = new ImageOrPrintOptions();
  $options->setHorizontalResolution(200);
  $options->setVerticalResolution(200);
  $options->setImageType(ImageType::EMF);
  # वर्कबुक को स्ट्रीम में सहेजें
  $sr = new SheetRender($sheet, $options);
  $pres = new Presentation();
  try {
    $pres->getSlides()->removeAt(0);
    $EmfSheetName = "";
    for($j = 0; $j < java_values($sr->getPageCount()) ; $j++) {
      $EmfSheetName = "test" . $sheet->getName() . " Page" . $j + 1 . ".out.emf";
      $sr->toImage($j, $EmfSheetName);
      $picture;
      $image = Images->fromFile($EmfSheetName);
      try {
        $picture = $pres->getImages()->addImage($image);
      } finally {
        if (!java_is_null($image)) {
          $image->dispose();
        }
      }
      $slide = $pres->getSlides()->addEmptySlide($pres->getLayoutSlides()->getByType(SlideLayoutType::Blank));
      $m = $slide->getShapes()->addPictureFrame(ShapeType::Rectangle, 0, 0, $pres->getSlideSize()->getSize()->getWidth(), $pres->getSlideSize()->getSize()->getHeight(), $picture);
    }
    $pres->save("output.pptx", SaveFormat::Pptx);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

इमेज कलेक्शन में छवियों को बदलें

Aspose.Slides आपको प्रस्तुति के इमेज कलेक्शन में संग्रहीत छवियों (स्लाइड आकारों द्वारा उपयोग की गई छवियों सहित) को बदलने की अनुमति देता है। इस अनुभाग में कलेक्शन में छवियों को अपडेट करने के कई तरीके दिखाए गए हैं। API कच्चे बाइट डेटा, एक IImage इंस्टेंस, या कलेक्शन में पहले से मौजूद किसी अन्य छवि का उपयोग करके छवि को बदलने के सरल तरीके प्रदान करता है।

  1. Presentation क्लास का उपयोग करके उन छवियों वाली प्रस्तुति फ़ाइल लोड करें।
  2. फ़ाइल से एक नई छवि को बाइट ऐरे में लोड करें।
  3. बाइट ऐरे का उपयोग करके लक्ष्य छवि को नई छवि से बदलें।
  4. दूसरे तरीके में, छवि को एक IImage ऑब्जेक्ट में लोड करें और लक्ष्य छवि को उस ऑब्जेक्ट से बदलें।
  5. तीसरे तरीके में, लक्ष्य छवि को प्रस्तुति के इमेज कलेक्शन में पहले से मौजूद किसी छवि से बदलें।
  6. संशोधित प्रस्तुति को PPTX फ़ाइल के रूप में लिखें।
// एक प्रस्तुति फ़ाइल का प्रतिनिधित्व करने वाली Presentation क्लास को इंस्टैंटिएट करें।
$presentation = new Presentation("sample.pptx");
try {
    // पहला तरीका।
    $imagePath = (new Java("java.io.File", "image0.jpeg"))->toPath();
    $imageData = (new Java("java.nio.file.Files"))->readAllBytes($imagePath);
    $oldImage = $presentation->getImages()->get_Item(0);
    $oldImage->replaceImage($imageData);

    // दूसरा तरीका।
    $newImage = Images::fromFile("image1.png");
    $oldImage = $presentation->getImages()->get_Item(1);
    $oldImage->replaceImage($newImage);
    $newImage->dispose();
    
    // तीसरा तरीका।
    $oldImage = $presentation->getImages()->get_Item(2);
    $oldImage->replaceImage($presentation->getImages()->get_Item(3));
    
    // प्रस्तुति को फ़ाइल में सहेजें।
    $presentation->save("output.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

अक्सर पूछे जाने वाले प्रश्न

क्या छवि डालने के बाद मूल रेज़ोल्यूशन बना रहता है?

हाँ। स्रोत पिक्सेल संरक्षित रहते हैं, लेकिन अंतिम स्वरूप इस बात पर निर्भर करता है कि स्लाइड पर picture कैसे स्केल किया गया है और सहेजते समय कोई संपीड़न लागू हुआ है या नहीं।

कई स्लाइड्स में एक ही लोगो को एक साथ बदलने का सबसे अच्छा तरीका क्या है?

लोगो को मास्टर स्लाइड या लेआउट पर रखें और उसे प्रस्तुति के इमेज कलेक्शन में बदलें—अपडेट उस संसाधन का उपयोग करने वाले सभी तत्वों में फैल जाएगा।

क्या सम्मिलित SVG को संपादन योग्य आकारों में बदला जा सकता है?

हाँ। आप SVG को आकारों के समूह में बदल सकते हैं, उसके बाद व्यक्तिगत भाग मानक आकार गुणों के साथ संपादन योग्य हो जाते हैं।

मैं कई स्लाइड्स की पृष्ठभूमि के रूप में एक चित्र को एक साथ कैसे सेट करूँ?

Assign the image as the background को मास्टर स्लाइड या संबंधित लेआउट पर सेट करें—उस मास्टर/लेआउट का उपयोग करने वाली सभी स्लाइड्स पृष्ठभूमि को विरासत में ले लेगी।

मैं कई चित्रों के कारण प्रस्तुति के आकार के “ballooning” को कैसे रोकूँ?

डुप्लिकेट की बजाय एक ही छवि संसाधन का पुन: उपयोग करें, उचित रेज़ोल्यूशन चुनें, सहेजते समय संपीड़न लागू करें, और जहाँ उचित हो दोहराई गई ग्राफिक्स को मास्टर पर रखें।