HP-Bauer: Problem mit header("Content-type: image/jpg");

Hallo,

ich lasse Bilder dynamisch verkleinern, was gut funktioniert. Beim Klick auf ein Bild soll es in einem neuen Fenster vergrößert angezeigt werden. Dies funktioniert im IE nur, wenn ich den Header ( header("Content-type: image/jpg"); ) weglasse. Ohne Header zeigt aber Mozilla nur Buchstabensalat an. Was tun? Wie lässt sich das Problem beheben?

MfG,
HP-Bauer

  1. hi,

    ich lasse Bilder dynamisch verkleinern, was gut funktioniert. Beim Klick auf ein Bild soll es in einem neuen Fenster vergrößert angezeigt werden. Dies funktioniert im IE nur, wenn ich den Header ( header("Content-type: image/jpg"); ) weglasse. Ohne Header zeigt aber Mozilla nur Buchstabensalat an.

    ich nehme also an, dass du im neuen fenster direkt das bilderzeugende script aufrufst, ohne eine html-seite "darumzupacken" und das script über <img> einzubinden?

    kannst du mal ein online-beispiel zum nachvollziehen der problematik zur verfügung stellen?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Online-Beispiel ist schlecht, aber hier ist der Code:

      Skript zur Bilderzeugung:

      <?PHP
      if (isset($_GET["file"])) $file = $_GET["file"];
      else $file = null;
      if (isset($_GET["imgsize"])) $imgsize = $_GET["imgsize"];

      if ($file != null && is_readable($file)) {
             $size = @getimagesize($file);
             $imgwidth = $size[0];
             $imgheight = $size[1];
             if ($imgsize==750) {
                if ($imgwidth > 750) $maxwidth = 750;
                else $maxwidth = $imgwidth;
             } else {
               $maxwidth = $imgsize;
             }

      if ($imgwidth > $maxwidth) {
                $thheight = $imgheight / ($imgwidth / $maxwidth);
                $thheight = round($thheight);
                $thwidth = $maxwidth;
             } else {
               $thwidth = $imgwidth;
               $thheight = $imgheight;
             }

      $source = ImageCreateFromJPEG ($file);
             header("Content-type: image/jpg");
             $dest  = imagecreatetruecolor($thwidth, $thheight);

      imagecopyresampled ($dest, $source, 0, 0, 0, 0, $thwidth, $thheight, $imgwidth, $imgheight);
             imagejpeg($dest);

      imagedestroy($dest);
             imagedestroy($source);

      }
      ?>

      Skript zur Linkerzeugung und Einfügen des verkleinerten Bildes:

      <?PHP
      $size = @getimagesize($imgf);
      $imgwidth = $size[0] + 20;
      $imgheight = $size[1] + 20;

      if ($size[0] > 150) {
         echo "<a href='resizeimage.php?file=$imgf&imgsize=750'";
         echo "target='_blank' onclick="NewWindow(";

      echo "'resizeimage.php?file=$imgf&imgsize=750'";
         echo ",'_blank'";
         echo ",'$imgwidth','$imgheight','no','center'); return false" id='link-bold-m'>";
      }
      echo "<img src='resizeimage.php?file=$imgf&imgsize=150' border='0' alt='$title'>";
      if ($size[0] > 150) echo "</a>";
      ?>

      MfG,
      HP-Bauer

      1. Hi,

        <?PHP
        [...]
               header("Content-type: image/jpg");

        ^
                                        richtig muss er image/jpeg lauten

        [...]
        if ($size[0] > 150) {
           echo "<a href='resizeimage.php?file=$imgf&imgsize=750'";
           echo "target='_blank' onclick="NewWindow(";
           echo "'resizeimage.php?file=$imgf&imgsize=750'";

        du könntest ein weiteres Script schreiben, das nichts anderes tut, als das Bild in einen img-Tag zu packen:

        <html>
        ...blah...
        <img src="resizeimage.php?file=<?php echo $_GET['imgf']; ?>&amp;imgsize=<?php echo $_GET['imgsize']; ?>" border="0" alt="<?php echo htmlspecialchars($_GET['title']); ?>">
        ...blubb...
        </html>

        Das bindest du dann statt resizeimage.php in den Link und das onclick-Event ein.

        Gruß,
        Andreas.

        1. Danke für den Tipp!

          MfG,
          HP-Bauer