Sunumlarda Görüntü Yönetimini PHP ile Optimize Edin
Giriş
Görseller, sunumları daha ilgi çekici ve etkileyici hâle getirir. Microsoft PowerPoint’te bir dosyadan, internetten veya başka konumlardan slaytlara resim ekleyebilirsiniz. Benzer şekilde, Aspose.Slides, sunumlarınızdaki slaytlara farklı prosedürlerle resim eklemenizi sağlar.
Tip
Aspose, insanlara görüntülerden hızlıca sunumlar oluşturmayı sağlayan ücretsiz dönüştürücüler—JPEG to PowerPoint ve PNG to PowerPoint—sağlar.Info
Bir resmi çerçeve nesnesi olarak eklemek istiyorsanız—özellikle boyutunu değiştirmek, efekt eklemek ve benzeri standart biçimlendirme seçeneklerini kullanmayı planlıyorsanız—Picture Frame sayfasına bakın.Note
Bir görüntüyü bir biçimden diğerine dönüştürmek için görüntüler ve PowerPoint sunumlarıyla ilgili giriş/çıkış işlemlerini manipüle edebilirsiniz. Bu sayfalara bakın: dönüştür görüntüyü JPG’ye; dönüştür JPG’yi görüntüye; dönüştür JPG’yi PNG’ye, dönüştür PNG’yi JPG’ye; dönüştür PNG’yi SVG’ye, dönüştür SVG’yi PNG’ye.Aspose.Slides, bu popüler formatlardaki görüntülerle (JPEG, PNG, GIF ve diğerleri) işlemleri destekler.
Yerel Olarak Saklanan Görselleri Slaytlara Ekle
Bilgisayarınızdaki bir veya birden fazla görüntüyü bir sunum slaytına ekleyebilirsiniz. Bu örnek kod, bir resmi slayta nasıl ekleyeceğinizi gösterir:
$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();
}
}
Web’den Görselleri Slaytlara Ekle
Bir slayta eklemek istediğiniz görüntü bilgisayarınızda bulunmuyorsa, görüntüyü doğrudan web’ten ekleyebilirsiniz.
Bu örnek kod, web’ten bir resmi slayta nasıl ekleyeceğinizi gösterir :
$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();
}
}
Görselleri Slayt Ana Şablonlarına Ekle
Bir slayt ana şablonu, altındaki tüm slaytların (tema, düzen vb.) bilgilerini depolayan ve kontrol eden üst slayttır. Bu nedenle, bir slayt ana şablonuna bir resim eklediğinizde, o resim o ana şablon altındaki her slaytta görünür.
Bu Java örnek kodu, bir resmi slayt ana şablonuna nasıl ekleyeceğinizi gösterir:
$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();
}
}
Görselleri Slayt Arka Planı Olarak Ekle
Belirli bir slayt veya birden fazla slayt için resmi arka plan olarak kullanmaya karar verebilirsiniz. Bu durumda, Bir Resmi Slayt Arka Planı Olarak Ayarla nasıl yapılır bakmanız gerekir.
Sunumlara SVG Ekle
Sunuma herhangi bir görüntüyü eklemek veya eklemek için, ShapeCollection sınıfına ait olan addPictureFrame yöntemini kullanabilirsiniz.
SVG görüntüsüne dayalı bir görüntü nesnesi oluşturmak için bunu şu şekilde yapabilirsiniz:
- SvgImage nesnesi oluşturun ve ImageShapeCollection’a ekleyin
- ISvgImage’den PPImage nesnesi oluşturun
- PPImage sınıfını kullanarak PictureFrame nesnesi oluşturun
Bu örnek kod, yukarıdaki adımları uygulayarak bir SVG görüntüsünü sunuma nasıl ekleyeceğinizi gösterir:
# PPTX dosyasını temsil eden Presentation sınıfını örnekle
$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’yi Şekil Kümesine Dönüştür
Aspose.Slides’in SVG’yi şekil kümesine dönüştürme işlemi, SVG görüntüleriyle çalışmak için kullanılan PowerPoint işlevselliğine benzer:

Bu işlevsellik, SvgImage nesnesini ilk argüman olarak alan ShapeCollection sınıfının addGroupShape yönteminin aşırı yüklemelerinden biri tarafından sağlanır.
Bu örnek kod, bir SVG dosyasını şekil kümesine dönüştürmek için açıklanan yöntemi nasıl kullanacağınızı gösterir:
# Yeni sunum oluştur
$presentation = new Presentation();
try {
# SVG dosya içeriğini oku
$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 nesnesi oluştur
$svgImage = new SvgImage($svgContent);
# Slayt boyutunu al
$slideSize = $presentation->getSlideSize()->getSize();
# SVG görüntüsünü slayt boyutuna ölçeklendirerek şekil grubuna dönüştür
$presentation->getSlides()->get_Item(0)->getShapes()->addGroupShape($svgImage, 0.0, 0.0, $slideSize->getWidth(), $slideSize->getHeight());
# Sunumu PPTX formatında kaydet
$presentation->save("output.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Görselleri EMF Olarak Slaytlara Ekle
Aspose.Slides for PHP via Java, Excel sayfalarından EMF görüntüleri oluşturmanıza ve bu görüntüleri Aspose.Cells ile slaytlara EMF olarak eklemenize olanak tanır.
Bu örnek kod, açıklanan görevi nasıl yerine getireceğinizi gösterir:
$book = new Workbook("chart.xlsx");
$sheet = $book->getWorksheets()->get(0);
$options = new ImageOrPrintOptions();
$options->setHorizontalResolution(200);
$options->setVerticalResolution(200);
$options->setImageType(ImageType::EMF);
# Çalışma kitabını akışa kaydet
$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();
}
}
Görsel Koleksiyonundaki Görselleri Değiştir
Aspose.Slides, bir sunumun görsel koleksiyonunda (slayt şekilleri tarafından kullanılanlar dahil) depolanan görselleri değiştirmenize olanak tanır. Bu bölüm, koleksiyondaki görselleri güncellemenin birkaç yaklaşımını gösterir. API, ham bayt verileri, bir IImage örneği veya koleksiyonda zaten mevcut olan başka bir görsel kullanarak görseli değiştirmek için doğrudan yöntemler sağlar.
Aşağıdaki adımları izleyin:
- Presentation sınıfını kullanarak görüntüleri içeren sunum dosyasını yükleyin.
- Yeni bir görüntüyü dosyadan bir bayt dizisine yükleyin.
- Hedef görseli, bayt dizisini kullanarak yeni görsel ile değiştirin.
- İkinci yaklaşımda, görüntüyü bir IImage nesnesine yükleyin ve hedef görseli bu nesne ile değiştirin.
- Üçüncü yaklaşımda, hedef görseli sunumun görsel koleksiyonunda zaten mevcut olan bir görsel ile değiştirin.
- Değiştirilmiş sunumu bir PPTX dosyası olarak yazın.
// Sunum dosyasını temsil eden Presentation sınıfını örnekle.
$presentation = new Presentation("sample.pptx");
try {
// İlk yol.
$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);
// İkinci yol.
$newImage = Images::fromFile("image1.png");
$oldImage = $presentation->getImages()->get_Item(1);
$oldImage->replaceImage($newImage);
$newImage->dispose();
// Üçüncü yol.
$oldImage = $presentation->getImages()->get_Item(2);
$oldImage->replaceImage($presentation->getImages()->get_Item(3));
// Sunumu bir dosyaya kaydet.
$presentation->save("output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Info
Aspose ÜCRETSİZ Text to GIF dönüştürücüsünü kullanarak metinleri kolayca canlandırabilir, metinlerden GIF oluşturabilir vb.SSS
Ekleme sonrası orijinal görüntü çözünürlüğü korunur mu?
Evet. Kaynak pikseller korunur, ancak nihai görünüm, slaytta picture nasıl ölçeklendirildiğine ve kaydetme sırasında uygulanan sıkıştırmaya bağlıdır.
Yüzlerce slaytta aynı logoyu bir anda değiştirmek için en iyi yöntem nedir?
Logoyu ana slayt veya bir yerleşime yerleştirin ve sunumun görsel koleksiyonunda değiştirin—güncellemeler bu kaynağı kullanan tüm öğelere yayılır.
Eklenen bir SVG düzenlenebilir şekillere dönüştürülebilir mi?
Evet. Bir SVG’yi şekil grubuna dönüştürebilirsiniz; böylece bireysel parçalar standart şekil özellikleriyle düzenlenebilir hâle gelir.
Bir resmi birden fazla slayt için aynı anda arka plan olarak nasıl ayarlayabilirim?
Görseli arka plan olarak ata ana slaytta veya ilgili yerleşimde—bu ana/slayt düzenini kullanan tüm slaytlar arka planı miras alır.
Birçok resim nedeniyle sunumun boyutu “şişmesi” nasıl önlenir?
Tek bir görüntü kaynağını tekrar kullanın, çoğaltmalar yerine, makul çözünürlükler seçin, kaydetme sırasında sıkıştırma uygulayın ve tekrarlanan grafikleri gerektiğinde ana slaytta tutun.