Hi zusammen,
wie ich in einem älteren Thread schon anfragte habe ich nach einem Bildausschnit gefragt. DAzu habe ich erfolgreich ein Skript geschrieben bekommen, welches auch funktioniert - dachte ich zumindest bisher.
Jedoch, dadurch, dass mein Code das neue Bild nicht als eine neue Datei abspeichert, wird das Bild nicht als korrekter Link dargestellt.
Hier erstmal der Link zum funktionierenden test.php:
und nun der Code:
Nun das Problem. Als einzige Bildabfrage funktioniert das ganze. Jedoch wenn ich zweimal die Funktion aufrufe ruft der Server immer nur die erste Anfrage ab. Der Rest wird schon nicht mehr "sichtbar" abgearbeitet.
Würde aber gerne drei nebeneinander setzen und wenn möglich auch als Bilder handhaben können. Muss ich die Dateien dann nochmal spezifisch abspeichern um dann diese abrufen zu können?!
Gruß
macg.
wie ich in einem älteren Thread schon anfragte habe ich nach einem Bildausschnit gefragt. DAzu habe ich erfolgreich ein Skript geschrieben bekommen, welches auch funktioniert - dachte ich zumindest bisher.
Jedoch, dadurch, dass mein Code das neue Bild nicht als eine neue Datei abspeichert, wird das Bild nicht als korrekter Link dargestellt.
Hier erstmal der Link zum funktionierenden test.php:
und nun der Code:
Code:
<?php
/**
* Diese Funktion zeigt aus einem gegebenem Bild "nur" einen bestimmten Ausschnitt
* Dabei kann der Ausschnitt aber bei jedem Aufruf unterschiedlich varieren weil
* der Bereich jedesmal per Zufallsprinzip gewählt wird
* Hier muss jedoch beachtet werden, dass der Bereich inklusive Breite und Höhe
* noch innerhalb des Ausgangsbildes ist
**/
ob_start();
// Aufruf der Funktion:
erzeugeBildausschnitt("[DELETED BY USER].orange.jpg");
function erzeugeBildausschnitt($bildQuelle){
if (!headers_sent()) {
header("Content-type: image/jpeg");
}
// benötigte Daten des Bildes werden geladen und direkt einer passenden Variablen zugeordnet (dank list())
list($width, $height, $type, $attr) = getimagesize("$bildQuelle");
// welche Breite + Hoehe soll der Ausschnitt haben
$Ausschnitt_Breite = 100;
$Ausschnitt_Hoehe = 100;
// berechne welche Bereiche in Abhängigkeit der Ausschnitte gewählt werden können
$moeglicheSpannbreite = $width - $Ausschnitt_Breite;
$moeglicheSpannhoehe = $height - $Ausschnitt_Hoehe;
// welcher Bereich soll dargestellt werden (Zufallsprinzip)
$Position_x = rand(0, $moeglicheSpannbreite);
$Position_y = rand(0, $moeglicheSpannhoehe);
//OriginalDatei
$img1 = imagecreatefromjpeg($bildQuelle);
//Neue Datei mit Auschnitt der Originaldatei
$img2 = imagecreatetruecolor($Ausschnitt_Breite, $Ausschnitt_Hoehe);
//Was soll geschehen?
//Aus der Hauptdatei soll ein Auschnitt (x: 15px; y:15 px; Breite: 70px; Höhe: 140px)
//in die Neue Dateu ($img2) kopiert werden.
imagecopymerge($img2, $img1, 0, 0, $Position_x, $Position_y, $Ausschnitt_Breite, $Ausschnitt_Hoehe, 100);
//Die neue Datei wird unter einem anderen Namen abgespeichert (und anschließend Speicher gelöscht)
imagejpeg($img2,"",70);
imagedestroy($img1);
imagedestroy($img2);
}
ob_end_flush();
?>
Nun das Problem. Als einzige Bildabfrage funktioniert das ganze. Jedoch wenn ich zweimal die Funktion aufrufe ruft der Server immer nur die erste Anfrage ab. Der Rest wird schon nicht mehr "sichtbar" abgearbeitet.
Würde aber gerne drei nebeneinander setzen und wenn möglich auch als Bilder handhaben können. Muss ich die Dateien dann nochmal spezifisch abspeichern um dann diese abrufen zu können?!
Gruß
macg.
Zuletzt bearbeitet: