Signatur
Beschreibung
ps_close_image() gehört zur ps-Erweiterung (pslib) für PHP und beendet die Nutzung eines Bildes, das zuvor mit einer Funktion wie ps_open_image() oder ps_open_image_file() in ein PostScript-Dokument eingebunden wurde. Nach dem Aufruf ist die Bild-ID ungültig und darf nicht mehr verwendet werden.
Der Aufruf ist wichtig, um Speicherlecks zu vermeiden, insbesondere wenn in einer Schleife viele Bilder in ein PostScript-Dokument eingefügt werden. Solange ein Bild nicht explizit geschlossen wird, bleibt der zugehörige Speicher belegt.
Typischerweise wird ps_close_image() aufgerufen, nachdem das Bild per ps_place_image() in das Dokument platziert wurde und nicht mehr benötigt wird. Das Schließen des Dokuments mit ps_delete() allein ersetzt diesen Aufruf nicht zuverlässig.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die PostScript-Ressource, die mit ps_new() erzeugt wurde und zu der das Bild gehört. |
|
| $imageid Pflicht | int | Die numerische ID des Bildes, die von ps_open_image() oder ps_open_image_file() zurückgegeben wurde. |
Rückgabewert
Beispiele
Bild öffnen, platzieren und schließen
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 595, 842);
// Bild aus Datei öffnen
$image = ps_open_image_file($ps, 'jpeg', 'foto.jpg', '', 0);
if ($image) {
// Bild auf der Seite platzieren
ps_place_image($ps, $image, 50, 700, 0.5);
// Bild schließen und Speicher freigeben
ps_close_image($ps, $image);
}
ps_end_page($ps);
ps_delete($ps);
?>
Mehrere Bilder in einer Schleife verarbeiten
<?php
$ps = ps_new();
ps_open_file($ps, 'katalog.ps');
$bilddateien = ['seite1.jpg', 'seite2.jpg', 'seite3.jpg'];
foreach ($bilddateien as $index => $datei) {
ps_begin_page($ps, 595, 842);
$image = ps_open_image_file($ps, 'jpeg', $datei, '', 0);
if ($image) {
ps_place_image($ps, $image, 50, 500, 0.8);
// Speicher sofort nach Verwendung freigeben
ps_close_image($ps, $image);
}
ps_end_page($ps);
}
ps_delete($ps);
?>
// Wichtig · Fallstricke
Wichtig: Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und erfordert die externe Bibliothek pslib. Sie muss explizit kompiliert oder als PECL-Paket installiert werden. Auf vielen modernen Systemen ist diese Erweiterung kaum noch verfügbar.
Nach dem Aufruf von ps_close_image() darf die $imageid nicht mehr für andere ps-Funktionen verwendet werden, da dies zu undefiniertem Verhalten führen kann. Bei der Verarbeitung vieler Bilder ist das konsequente Schließen essenziell, um einen übermäßigen Speicherverbrauch zu verhindern.