Start · Sprachen · PHP · Referenz · ps_close_image

ps_close_image

Funktion

Schließt ein zuvor geöffnetes Bild in einer PostScript-Ressource und gibt den dafür reservierten Speicher frei.

Kategorie: misc

Signatur

ps_close_image(resource $psdoc, int $imageid): void

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

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

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.