Hallo zusammen,
teilweise mit der Hilfe dieses Forums habe ich (vor allem zu Testzwecken und Erfahrung sammeln) eine Klasse gebaut, die Bilder vergrößert oder verkleinert ohne das Seitenverhältnis zu verändern.
Während die Logik nicht so das Problem war, hatte ich Probleme das per imagejpeg() aus der gdlib erstellte Bild am Bildschirm auszugeben.
Hier habe ich die Lösung in Form einer eigenen Datei bekommen, die header('Content-Type: image/jpeg'); enthält.
Das funktioniert auch weitestgehend ganz gut. Allerdings habe ich auf einigen Webservern anscheinend ein Problem mit der Pfadangabe und um zu erkennen wo das Script aussteigt habe ich an einigen Stellen per fwrite in ein Logfile geschrieben.
Jetzt zum Problem.
Nutze ich in der Funktion resizeImageProportion nicht meine Funktion writeLog funktioniert es 1a.
Sobald ich die Zeilen einkommentiere erhalt ich keine Ausgabe mehr...
So, nun der Quellcode.
1. Hier wird an der passenden Stelle der Seite das Bild eingefügt
2. dies ist die image.php. Sie bekommt den Pfad zum Bild per $_GET
3. Hier die unter 2. includierte 'class_pictures.php'
Kann mir jemand sagen warum nichts mehr anzeigt wird sobald die Log-Datei geschrieben wird?
Oder ist diese Lösung generell nicht gut??
teilweise mit der Hilfe dieses Forums habe ich (vor allem zu Testzwecken und Erfahrung sammeln) eine Klasse gebaut, die Bilder vergrößert oder verkleinert ohne das Seitenverhältnis zu verändern.
Während die Logik nicht so das Problem war, hatte ich Probleme das per imagejpeg() aus der gdlib erstellte Bild am Bildschirm auszugeben.
Hier habe ich die Lösung in Form einer eigenen Datei bekommen, die header('Content-Type: image/jpeg'); enthält.
Das funktioniert auch weitestgehend ganz gut. Allerdings habe ich auf einigen Webservern anscheinend ein Problem mit der Pfadangabe und um zu erkennen wo das Script aussteigt habe ich an einigen Stellen per fwrite in ein Logfile geschrieben.
Jetzt zum Problem.
Nutze ich in der Funktion resizeImageProportion nicht meine Funktion writeLog funktioniert es 1a.
Sobald ich die Zeilen einkommentiere erhalt ich keine Ausgabe mehr...
So, nun der Quellcode.
1. Hier wird an der passenden Stelle der Seite das Bild eingefügt
PHP:
echo '<img src="image.php?orgPath='.c_base_dir . $angebot['offer_path_prodimage_thumb'].'&destPath=dummy.jpg&maxWidth=100&maxHeight=100">';
2. dies ist die image.php. Sie bekommt den Pfad zum Bild per $_GET
PHP:
<?php
header('Content-Type: image/jpeg');
include '../new_include/class/class_pictures.php';
$bild1 = new thumb();
$bild1->resizeImageProportion($_GET['orgPath'],'abc.jpg','202','130');
?>
3. Hier die unter 2. includierte 'class_pictures.php'
PHP:
<?php
class thumb {
public function resizeImageProportion($orgPath,$destPath,$maxWidth, $maxHeight){
/* $this->writeLog($orgPath); */
$orgSize['width']=$this->getSize($orgPath)[0];
$orgSize['height']=$this->getSize($orgPath)[1];
/* $this->writeLog("Größe ermittelt"); */
$orgImage = imagecreatefromjpeg($orgPath);
/* $this->writeLog("Original Bild Objekt erstellt"); */
$newImage = $orgImage;
if ($orgSize['width'] > $maxWidth) {
/* $this->writeLog("Breite wird angepasst"); */
$resizePercent = $maxWidth / $orgSize['width']*100;
$resizeFactor = 100/$resizePercent;
$destSize['width']=round($orgSize['width']/$resizeFactor,0);
$destSize['height']=round($orgSize['height']/$resizeFactor,0);
$newImage = imagecreatetruecolor($destSize['width'],$destSize['height']);
imagecopyresized($newImage,$orgImage,0,0,0,0,$destSize['width'],$destSize['height'],$orgSize['width'],$orgSize['height']);
}
if(isset($destSize)) {
$orgSize['width'] = $destSize['width'];
$orgSize['height'] = $destSize['height'];
}
if ($orgSize['height'] > $maxHeight) {
/* $this->writelog("Höhe wird angepasst"); */
$resizePercent = $maxHeight / $orgSize['height']*100;
$resizeFactor = 100/$resizePercent;
$destSize['width']=round($orgSize['width']/$resizeFactor,0);
$destSize['height']=round($orgSize['height']/$resizeFactor,0);
$orgImage = $newImage;
$newImage = imagecreatetruecolor($destSize['width'],$destSize['height']);
imagecopyresized($newImage,$orgImage,0,0,0,0,$destSize['width'],$destSize['height'],$orgSize['width'],$orgSize['height']);
}
imagejpeg($newImage);
$this->writeLog("Fertiges Bild angelegt / ausgegeben");
}
private function getSize($path) {
$sizes = getimagesize($path);
return($sizes);
}
private function writeLog($phrase) {
$file = fopen('log_class_thumb.txt','a');
$datum = new dateTime();
$timestamp = $datum->getTimeStamp();
$timestamp = $datum->format('Y-m-d H:i:s');
fwrite($file,$timestamp . " - " . $phrase . "\r\n");
fclose($datei);
}
}
?>
Kann mir jemand sagen warum nichts mehr anzeigt wird sobald die Log-Datei geschrieben wird?
Oder ist diese Lösung generell nicht gut??
Zuletzt bearbeitet: