Bild Unklar

aargau

Erfahrenes Mitglied
Hallo Zusammen, in meiner Galerie sind die Bilder immer unklar. Also so verpünktelt. Nun wollte ich Frafgen ob jemand von euch weis an was das liegt und was ich am Queltext ändern muss.

Galerie.php:

PHP:
html>
   <head>
      <title>Gallery</title>
      <meta http-equiv="generator" content="PHP Designer 2005" />
   </head>
   <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
   <?php
/*
**********************************************************
*                                                        *
*      Gallery by Christian Fedder 18.03.2005            *
*                                                        *
**********************************************************
*/
//<<<<<<<<<<<<<<<<<<<<<<<< KONFIGURATION >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$subdir = "img/userpic/"; //Bilderverzeichnis
$heading = "User Bilder"; //Überschrift
$imagewidth = 120; //Thumbnailbreite (Min 50; Max 200)
$bigimagewidth = 400; //Originalbild-Breite (Min 250; Max 600)
$colums = 4; //Spalten (Min 2; Max 10)
$shadow = False; //Schatten? Ja = true; Nein = False
//<<<<<<<<<<<<<<<<<<<<<< KONFIGURATION ENDE >>>>>>>>>>>>>>>>>>>>>>>>>>

    function shadowtable($imagehtml)
    {
      $output .= "<table style='border-style: none;' cellspacing='0' cellpadding='0' height='100%'>
        <tr><td rowspan='2' colspan='2' style='border-style: none;'>
	$imagehtml</td><td valign='top' style='border-style: none;' background='shadow/r.gif'>
        <img border='0' src='shadow/or.gif' width='8' height='10'></td></tr><tr>
        <td style='border-style: none;' background='shadow/r.gif'>&nbsp;</td></tr>
        <tr><td style='border-style: none;' background='shadow/u.gif' align='left'>
        <img border='0' src='shadow/ul.gif' width='10' height='10'></td>
        <td style='border-style: none;' background='shadow/u.gif'></td>
        <td style='border-style: none;' valign='top'><img border='0' src='shadow/ur.gif' width='8' height='10'></td>
	</tr></table>";
      return $output;
    }
   
    function showpicture($image, $widthget, $subdir, $shadow)
    {
      if ($shadow == true)
      {
        $output = "<td align='center' valign='middle'>";
	$imagehtml = "<a href='$PHP_SELF?image=$image&view=big'>
        <img border='0' src='calculate.php?image=$subdir/$image&width=$widthget' alt='$image'></a>";
        $output .= shadowtable($imagehtml);
	$output .= "<span class='text'>" .$image. "</span></td>";
      }
      else
      {
        $output = "<td align='center' valign='middle'>";
        $output .= "<table style='border-style: none;' cellspacing='0' cellpadding='0' height='100%'>
        <tr><td style='border-style: none;'>";
        $output .= "<a href='$PHP_SELF?image=$image&view=big'>
        <img border='0' src='calculate.php?image=$subdir/$image&width=$widthget' alt='$image'></a></td></tr></table>
	<span class='text'>" .$image. "</span></td>";
      }
      return $output;
    }
    
   function showbigpicture($subdir, $imagewidth, $image, $shadow, $von)
   {
    $i = 0;
    $dir = opendir($subdir);
    while ($file = readdir($dir))
     {
        $imagechecker = @getimagesize($subdir. "/" .$file);
        if ($imagechecker[2] == 1 OR $imagechecker[2] == 2)
        {
          $images[$i] = $file;
          if ($file == $image)
          {
              $imagehtml = "<img border='0' src='calculate.php?image=$subdir/$file&width=$imagewidth' alt='$file'>";
              $aktuell = count($images);
	      if ($shadow == true)
	      {
                echo shadowtable($imagehtml);
                echo "<table width='100%' border='0'>
		<tr><td class='text' align='left' width='50%'>Bild " .$aktuell. " von " .$von. "</td>
		<td class='text' align='right' width='50%'>Bildname: $file</td>
		</tr></table>";
	      }
	      else
	      {
                echo $imagehtml. "<br>";
                echo "<span class='text'>Bild " .$aktuell. " von " .$von. "</span>";
	      }
           $count = $i;
          }
          $i++;
	}
      }
        echo "<table border='0' width='100%' align='center'><tr><td align='center' width='33%'>";
        if ($count > 0)
        {
          $output .= "<a href='" .$PHP_SELF. "?image=" .$images[0]. "&view=big'> << Erstes</a>";
	  $output .= "<a href='" .$PHP_SELF. "?image=" .$images[$count-1]. "&view=big'> < Zurück </a>";
        }
        else {$output .= "&nbsp;";}
        $output .= "</td><td align='center'>";
        $output .= "<a href='fun_pic.php'>Back</a>";
        $output .= "</td><td align='center' width='33%'>";
        if ($count < count($images)-1)
        {
          $output .= "<a href='" .$PHP_SELF. "?image=" .$images[$count+1]. "&view=big'> Vorwärts > </a>";
          $output .= "<a href='" .$PHP_SELF. "?image=" .$images[$von-1]. "&view=big'> Letztes >> </a>";
        }
        else {$output .= "&nbsp;";}
        $output .= "</td></tr></table>";
     return $output;
    }

//<<<<<<<<<<<<< HAUPTPROGRAMM >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    echo "<center><span class='bigtext'>$heading</span></center><br>";
    $count = 1;
    $zaehler = 0;
    $dir = opendir($subdir);
    while ($file = readdir($dir))
      {
          $imagechecker = @getimagesize($subdir. "/" .$file);
          if ($imagechecker[2] == 1 OR $imagechecker[2] == 2)
          {
            $zaehler ++;
	  }
      }
      closedir($dir);
    if (!$view)
    {
      $dir = opendir($subdir);
      echo "<table align='center' cellpadding='5' cellspacing='0' style=\"border:1px solid black; empty-cells:show\">";
      while ($file = readdir($dir))
      {
          $imagechecker = @getimagesize($subdir. "/" .$file);
          if ($imagechecker[2] == 1 OR $imagechecker[2] == 2)
          {
            $zaehler ++;
            if ($count == 1){echo "<tr>";}
            echo showpicture($file, $imagewidth, $subdir, $shadow);
            if ($count < $colums) {$count++;}
            else {$count = 1; echo "</tr>";}
	  }
      }
      closedir($dir);
      echo "</table>";
    }
    else
    {
      echo "<br>";
      echo "<table align='center' cellpadding='5' cellspacing='0' style=\"border:0px solid black; empty-cells:\">";
      echo "<tr><td>";
      echo showbigpicture($subdir, $bigimagewidth, $image, $shadow, $zaehler);
      echo "</td></tr></table>";
    }
    if ($shadow == true){$shaus = "Ja";} else {$shaus = "Nein";}
    echo "<br><br><center><span class='text'></span></center>";
   ?>
   </body>
</html>

calculate.php:

PHP:
<?php
if (!$width)
{
$width = 50;
}
$sourceimage = $image;
$info = getimagesize($sourceimage);
$widthold = $info[0];
$heightold = $info[1];
$height = ceil($heightold*$width/$widthold);
switch($info[2])
{
case 1: //jpeg
$imageold = imagecreatefromgif($sourceimage);
break;
case 2: //Jpeg
$imageold = imagecreatefromjpeg($sourceimage);
break;
}
$imagenew = imagecreatetruecolor($width, $height);
imagecopyresampled($imagenew, $imageold, 0, 0, 0, 0, $width, $height, $widthold, $heightold);
header("Content-type: image/jpeg");
imagegif($imagenew);
imagedestroy($imageold);
imagedestroy($imagenew);
?>
 
Hallo!

Fällt Dir hier denn nichts auf?
PHP:
header("Content-type: image/jpeg"); 
imagegif($imagenew);
Gruss Dr Dau
 
Sorry, aber erlichgesagt nicht :( Ich begreife PHP auch nicht wirklich. Währe froh wenn du mir schreiben könntest was da nicht stimmt.

Danke schon mal
 
Na, wenn Du dem Browser schon per header() sagst dass es ein JPEG sein soll, dann solltest Du auch
PHP:
imagejpeg($imagenew);
nutzen. ;)

Da die Qualität so aber per default auf 75 ausgegeben wird, solltest Du lieber
PHP:
imagejpeg($imagenew, "", "85");
nehmen.
Der 2. Parameter bleibt leer, da Du das Bild ja nicht speichern willst.
Der 3. Parameter gibt die Qualität an..... 85 ist (meiner Meinung nach) ein guter Kompromiss zwischen Dateigrösse und Qualität.
 
Hallo Dr Dau,

Nun tönt es doch schon viel einfacher :D Denke das ich es nun hinbekomme. Ich dachte mir bereits das es irgend was mit der Qualität auf sich hat, aber eben... Ich kenne mich noch nicht so aus. Bin ja auch erst 16.

Danke dir jedenfals für die schnelle und Super gute Hilfe!

Grüsse
Marco

Edit:

:( Irgend wie will es nicht gehen :( Hier ist die Ausgabe Datei: http://marcovolt.info/aktuelle/user_pic.php?image=Sonnenuntergang.jpg&view=big

Hier die Original Datei:
http://marcovolt.info/aktuelle/img/userpic/Sonnenuntergang.jpg

Was mache ich den nur falsch
 
Zuletzt bearbeitet:
Du hattest das Bild ja mit imagegif() als GIF ausgegeben.
Ein GIF kann aber nur aus 256 Farben bestehen.
Daher solltest Du GIF höchstens für Zeichnugen verwenden..... aber niemals für Fotos. ;)
Wenn das Foto aber schon als GIF hochgeladen wird, kann es zwar durch konvertieren zu einem JPG verbessert werden..... aber ein Wunder darfst Du natürlich nicht erwarten.
 
Sorry, aber jetzt begreiffe ich gar nichts mehr :( Könntest du mir den Code nicht schnell umschreiben das es geht? Die Bilder sind eigentlich immer JPGs.

Ich glaube ich brauche mal wieder eine Pause :D bin seit 15.00Uhr am Herumbasteln an meiner Page. Nun mache ich chon die einfachsten Befehle irgend wie falsch :(
 
Das Original ist von der Qualität her schon nicht das beste.
Einen wirklichen Unterschied zum neuen Bild kann ich so auch nicht sehen..... dazu sitze ich aber auch am falschen PC (uralter 15" Monitor der den Bildschirm schon verzerrt darstellt ;) ).

PHP:
 <?php 
if (!$width) 
{ 
$width = 50; 
} 
$sourceimage = $image; 
$info = getimagesize($sourceimage); 
$widthold = $info[0]; 
$heightold = $info[1]; 
$height = ceil($heightold*$width/$widthold); 
switch($info[2]) 
{ 
case 1: //GIF 
$imageold = imagecreatefromgif($sourceimage); 
break; 
case 2: //Jpeg 
$imageold = imagecreatefromjpeg($sourceimage); 
break; 
} 
$imagenew = imagecreatetruecolor($width, $height); 
imagecopyresampled($imagenew, $imageold, 0, 0, 0, 0, $width, $height, $widthold, $heightold); 
header("Content-type: image/jpeg"); 
imagejpeg($imagenew, "", "85"); 
imagedestroy($imageold); 
imagedestroy($imagenew); 
?>
 
ImageGIF() imagepng(), imagejpeg() funktioniert nicht

Hallo die Funktionen ImageGIF() imagepng(), imagejpeg() funktionieren anscheinend nicht mehr ab einer bestimmten Version ab so 1.6 oder so. keine ahnung.

würde gerne wissen, was es als alternative gibt. weiss das jemand?

//EDIT

hihi :)

ich habe eine lösung.

PHP:
$image = $_GET[image];
$width = $_GET[width]; 

if (!$width)
{
$width = 50;
}

$sourceimage = $image;
$info = getimagesize($sourceimage);
$widthold = $info[0];
$heightold = $info[1];

if ($heightold>$widthold)
{
    $height =  $width;
    $width = ceil($widthold*$height/$heightold);
}else{
    $height = ceil($heightold*$width/$widthold);
} 

switch($info[2])
{
case 1: //Gif
$imageold = imagecreatefromgif($sourceimage);
break;
case 2: //Jpeg
$imageold = imagecreatefromjpeg($sourceimage);
break;
}

if (ImageTypes() & IMG_GIF) {
   Header("Content-type: image/gif");
   ImageGif($imagenew);
}

$imagenew = imagecreatetruecolor($width, $height);
imagecopyresampled($imagenew, $imageold, 0, 0, 0, 0, $width, $height, $widthold, $heightold);
header("Content-type: image/gif");
imagejpeg($imagenew);
imagedestroy($imageold);
imagedestroy($imagenew);
 
Zurück