Mastershrimp: Bild online verkleinern und ausgeben

Beitrag lesen

Heyho!

Vielen Dank erstmal für deine kontinuierlich-schnellen Antworten!

Das mit dem getimagesize() ist mir nach Abschicken des Postings auch aufgefallen. Habe das dann einfach, so wie du schon sagtest, _vorher_ gemacht.
Ich zeig dir einfach mal meinen Versuch, der leider immer noch _nicht_ klappt. Habe jetzt auch mal ein paar mehr Kommentare eingefügt ;)

=====================================

<?php

/* Beim Lesen des folgenden Codes beginnt man am besten mit dem else{}-Bereich! */

if($_GET['action']=="ausgabe")          //Wenn Param. ausgabe gesetzt ist, liefert Script den Inhalt des Bildes für den IMG-Tag unten
 {
  session_start();
  $datei   = $_SESSION['datei_inhalt']; //Enthält den Dateiinhalt der hochgeladenen Datei

$width   = $_GET['breite'];  //Breite des endgültigen Bildes in px
  $height  = $_GET['hoehe'];   //Höhe des endgültigen Bildes in px
  $quali   = $_GET['quali'];   //Qualität der Komprimierung zwischen 1 und 100

$quell_datei = imagecreatefromjpeg($datei); //Erstellt eine JPEG-Datei aus dem Dateiinhalt der hochgeladenen Datei
  $ziel_datei  = imagecreatetruecolor($width,$height);

$resize_datei = imagecopyresampled($ziel_datei,$quell_datei,0,0,0,0,$width,$height,$bild_w,$bild_h); //Bildgröße anpassen

$interlace    = imageInterlace($ziel_datei,1); //Interlacing-Funktion: 0 = aus; 1 = an

header("Content-Type: image/jpeg");            //Ausgabe des Bildes, welches dann per IMG-Tag (s.u.) angezeigt wird
  $ausgabe = imagejpeg($ziel_datei,"",$quali);
 }

else
 {
  $width   = $_POST['breite'];  //Breite des endgültigen Bildes in px
  $height  = $_POST['hoehe'];   //Höhe des endgültigen Bildes in px
  $quali   = $_POST['quali'];   //Qualität der Komprimierung zwischen 1 und 100
  $prozent = $_POST['prozent']; //Prozentuale Veränderung

$datei = $_FILES['image']['tmp_name']; //Die hochgeladene Datei

$bild_info     = getimagesize($datei);
  $bild_w        = $bild_info[0];
  $bild_h        = $bild_info[1];

if($prozent!="") //Ggf. relative Anpassung der Seitenverhältnisse
   {
    $prozent  = $prozent/100;
    $width    = $bild_w * $prozent;
    $height   = $bild_h * $prozent;
   }

$html_head = "<html>\n<head>\n<title>Bild Ausgabe</title>\n</head>\n<body>\n";
   $html_tail = "\n</body>\n</html>";

if($quali=="" || $quali < 1 || $quali > 100)
    { echo $html_head . "Der Grad der Qualität muss zwischen 1 und 100 liegen!" . $html_tail; exit; }

if($width=="" || $height=="")
    { echo $html_head . "Es wurden keine Ziel-Maße übergeben!" . $html_tail; exit; }

if($bild_w=="" && $bild_info[2]!="2")
    { echo $html_head . "Das ist kein Bild oder kein JPEG-Bild!" . $html_tail; exit; }

$temp  = fopen($datei,"r");             //Hochgeladene Datei wird geöffnet...
  $temp  = fread($temp,filesize($datei)); //...und ausgelesen

session_start();
  $_SESSION['datei_inhalt'] = $temp; //Dateiinhalt der hochgeladenen Datei wird in einer Sessionvariable abgespeichert

//Ein IMG-Tag wird ausgegeben, über den die Funktion erneut aufgerufen wird und diesmal die Bilddaten ausgibt
  echo "<img src='" . basename($_SERVER["PHP_SELF"]) . "?action=ausgabe&amp;breite=" . $width . "&amp;hoehe=" . $height . "&amp;quali=" . $quali . "'>";
 }
?>

=====================================

Das Ganze lässt sich hier: http://mastershrimp.com/test/php/resize/image_resize_upload.php ansehen und ausprobieren.

Benutze ich die Session-Sachen richtig? Nehme ich die Session richtig wieder auf? Sendet der Browser schon Daten, bevor er den Header ausgibt? All das würde ja einen Fehler erklären...

Btw.: Sehe ich das richtig, dass ich in dem if($_GET['action]=="ausgabe")-Teil keinerlei Fehlerabfrage machen kann?

Siehst du noch einen Fehler? Vielleicht in der Syntax?

Gruß

Mastershrimp

--
Kämpft für die Rettung von dem Genitiv!