Start · Sprachen · PHP · Referenz · ps_place_image

ps_place_image

Funktion

Platziert ein zuvor geladenes Bild an einer bestimmten Position auf der aktuellen PostScript-Seite mit einem definierten Skalierungsfaktor.

Kategorie: misc

Signatur

ps_place_image(resource $psdoc, resource $image, float $x, float $y, float $scale): bool

Beschreibung

ps_place_image() ist Teil der PHP-PostScript-Erweiterung (ps) und ermöglicht es, ein Bild, das zuvor mit ps_open_image() oder ps_open_image_file() geladen wurde, an einer exakten Position auf der aktuellen Seite eines PostScript-Dokuments einzufügen.

Die Koordinaten $x und $y geben den linken unteren Eckpunkt des Bildes an, was dem Standard-PostScript-Koordinatensystem entspricht (Ursprung unten links). Der Parameter $scale bestimmt, wie das Bild relativ zu seiner Originalgröße skaliert wird – ein Wert von 1.0 entspricht der Originalgröße.

Diese Funktion ist besonders nützlich, wenn Bilder (z. B. Logos, Fotos oder Grafiken) präzise in generierte Dokumente wie Rechnungen, Berichte oder Etiketten eingebettet werden sollen. Sie eignet sich für alle Szenarien, in denen serverseitig PDF- oder PostScript-Dokumente mit Bildinhalt erzeugt werden.

Voraussetzung für den Einsatz ist, dass die ps-Erweiterung in PHP installiert und aktiviert ist sowie ein gültiges PostScript-Dokument mit einer geöffneten Seite vorliegt.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde.
$image Pflicht resource Die Bild-Ressource, die zuvor mit ps_open_image() oder ps_open_image_file() geöffnet wurde.
$x Pflicht float Die horizontale Position (x-Koordinate) des linken unteren Bildeckpunkts in PostScript-Punkten.
$y Pflicht float Die vertikale Position (y-Koordinate) des linken unteren Bildeckpunkts in PostScript-Punkten.
$scale Pflicht float Skalierungsfaktor für das Bild. 1.0 entspricht der Originalgröße, 0.5 der halben Größe, 2.0 der doppelten Größe.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false wenn ein Fehler aufgetreten ist, z. B. wenn die übergebene Bild-Ressource ungültig ist oder keine Seite geöffnet wurde.

Beispiele

Logo in ein PostScript-Dokument einfügen

<?php
// PostScript-Dokument erzeugen
$ps = ps_new();

if (!ps_open_file($ps, '/tmp/ausgabe.ps')) {
    die('Datei konnte nicht erstellt werden.');
}

ps_set_info($ps, 'Creator', 'MeinePHP-App');
ps_set_info($ps, 'Title', 'Dokument mit Bild');

// Seite öffnen (DIN A4: 595 x 842 Punkte)
ps_begin_page($ps, 595, 842);

// Bild aus Datei laden
$image = ps_open_image_file($ps, 'jpeg', '/pfad/zum/logo.jpg', '', 0);

if ($image) {
    // Bild bei x=50, y=750 mit halber Originalgröße platzieren
    ps_place_image($ps, $image, 50.0, 750.0, 0.5);
    ps_close_image($ps, $image);
}

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Dokument wurde erfolgreich erstellt.';
?>
PostScript-Dokument wurde erfolgreich erstellt.

Bild zentriert auf einer Seite platzieren

<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/zentriert.ps');

$seitenBreite  = 595;
$seitenHoehe   = 842;

ps_begin_page($ps, $seitenBreite, $seitenHoehe);

$image = ps_open_image_file($ps, 'jpeg', '/pfad/zum/bild.jpg', '', 0);

if ($image) {
    // Bildgröße in Originalpunkten abfragen
    $bildBreite  = ps_get_value($ps, 'imagewidth',  $image);
    $bildHoehe   = ps_get_value($ps, 'imageheight', $image);
    $scale       = 1.0;

    // Zentrierte Position berechnen
    $x = ($seitenBreite  - $bildBreite  * $scale) / 2;
    $y = ($seitenHoehe   - $bildHoehe   * $scale) / 2;

    ps_place_image($ps, $image, $x, $y, $scale);
    ps_close_image($ps, $image);
}

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
?>

// Wichtig · Fallstricke

Koordinatensystem: PostScript verwendet ein Koordinatensystem mit dem Ursprung unten links. Dies unterscheidet sich von vielen Grafikbibliotheken, bei denen der Ursprung oben links liegt. Beim Berechnen von Positionen muss dies berücksichtigt werden.

Skalierung: Der Skalierungsfaktor bezieht sich auf die native Auflösung des Bildes. Bei sehr großen Bildern mit hoher DPI-Zahl kann ein Faktor von 1.0 das Bild sehr groß erscheinen lassen – ggf. anpassen.

Abhängigkeit: Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (pecl install ps). Sie ist auf Systemen mit installierter pslib-Bibliothek verfügbar.