link zeigt kein bild an.

kova

Mitglied
Hallo

beim mein bild upload-system war die qualität der bilder nicht gerade das beste was es gibt deswegen wollte ich etwas an der qualität machen und habs auch geschaft aber jetzt werden die bilder beim ausschneiden nicht angezeigt. jetzt wollte ich mal wissen wieso und wie kann mans korigieren.

link:
CODE upload_bild.php?name=$name&image_nr=1


upload_bild.php

CODE switch($_GET[image_nr]){
case 1:
imagecopyresampled($image_h, $image_h2, 0,0,0,0,$x_size,$y_size,$x_size,$y_size);
imagecopy($image_h, $copy_logo, 0, 0, 0, 0, 100, 20);
break;
case 2:
imagecopyresampled($image_h, $image_h2, 0,0,($orig_width-$x_size)/2,($orig_height-$y_size)/2,$x_size,$y_size,$x_size,$y_size);
imagecopy($image_h, $copy_logo, 0, 0, 0, 0, 100, 20);
break;
case 3:
imagecopyresampled($image_h, $image_h2, 0,0,($orig_width-$x_size),($orig_height-$y_size),$x_size,$y_size,$x_size,$y_size);
imagecopy($image_h, $copy_logo, 0, 0, 0, 0, 100, 20);
break;
}
if($savecl == 1)
{
imagejpeg($image_h, $daten_dir_temp."/".$name, $quality);
imagejpeg($image_h, $quality);
}
else
imagejpeg($image_h, $quality);

imagedestroy($image_h);
 
Hallo,

ich sehe leider nicht den entsprechenden Content-Type-Header für die Ausgabe, den müsstest Du noch vor der Ausgabe des Strings, von Deinem erzeugten Bild, hinzufügen. [1] [2]


MfG Sascha Ahlers
 
hier mal der ganze script:

CODE <?
header("CONTENT-type: image/jpeg");

$daten_dir_temp = "images/galerie";


$src = imagecreatefromjpeg($daten_dir_temp."/".$name);

$quality = 1000;
$x_size = 240;
$y_size = 320;
$max_dimension = 400;

if($_GET[image_nr]==1)
{
// Bild auf passende Größe ändern
$size = getimagesize($daten_dir_temp."/".$name);

$orig_width = $size[0];
$orig_height = $size[1];

/*if ($orig_width > $orig_height)
{
$thumbnail_width = $y_size*($orig_height/$orig_width);
$thumbnail_height = $y_size;
}
else
{*/
$thumbnail_height = $y_size;
$thumbnail_width = $y_size*($orig_width/$orig_height);
#}
$thumbnail = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imagecopyresampled($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $orig_width, $orig_height);

imagejpeg($thumbnail, $daten_dir_temp."/".$name, $quality);
}



//bild ist geändert worden... nun das Bild mit 3 Ausschnitten anzeigen...
$size = getimagesize($daten_dir_temp."/".$name);

$orig_width = $size[0];
$orig_height = $size[1];


$image_h = imagecreatetruecolor($x_size, $y_size);
$image_h2= imagecreatefromjpeg($daten_dir_temp."/".$name);
$copy_logo= imagecreatefromjpeg("images/copy.jpg");

switch($_GET[image_nr]){
case 1:
imagecopyresampled($image_h, $image_h2, 0,0,0,0,$x_size,$y_size,$x_size,$y_size);
imagecopy($image_h, $copy_logo, 0, 0, 0, 0, 100, 20);
break;
case 2:
imagecopyresampled($image_h, $image_h2, 0,0,($orig_width-$x_size)/2,($orig_height-$y_size)/2,$x_size,$y_size,$x_size,$y_size);
imagecopy($image_h, $copy_logo, 0, 0, 0, 0, 100, 20);
break;
case 3:
imagecopyresampled($image_h, $image_h2, 0,0,($orig_width-$x_size),($orig_height-$y_size),$x_size,$y_size,$x_size,$y_size);
imagecopy($image_h, $copy_logo, 0, 0, 0, 0, 100, 20);
break;
}
if($savecl == 1)
{
imagejpeg($image_h, $daten_dir_temp."/".$name, $quality);
imagejpeg($image_h, $quality);
}
else
imagejpeg($image_h, $quality);

imagedestroy($image_h);
?>
 
Hallo,

Wird das Bild denn im Folder abgelegt?

$img=@ImageCreate(570, 260) or die("Da ist wohl was falsch konfiguriert..");
ImagePng($img,"image".$id.".png");
ImageDestroy($img);

Dann ruf ich nach dem Erzeugen des Bildes per html das Bild ab:

$stroutput.='<HTML><HEAD></HEAD><BODY><IMG src="image".$id.".png"></body></html>";

print $stroutput;
Das funktioniert eigentlich prima.

Gruss

Tümmel
 
ich weiß nicht ob ihr mich verstanden habt.

bevor ich "$quality" nicht im script hatte wurde das bild noch angezeigt aber da war die qualität der bilder so beschießen das man nur kästchen gesehen hatte. "übertreibe"

jetzt ist die qualität der bilder wie auf dem origenal man sieht ich dass das bild ausgeschnitten ist.

Und warum zeigt es jetzt kein bild an. Hab nur "$quality" bei imagejpeg reingefügt.
blink.gif
 
Hallo,

Bislang nahm ich an, der quality-Parameter setzt doch die Qualität in % der Orginalqualität.
Mehr als100% sollten folglich keinen Sinn machen.

 
OH ich hab mich vertippt die eine "NULL" ist zu viel.
Aber an der NuLL liegt der fehler nicht sondern an was anderem aber an was??
 
Bist du sicher, dass das so funktioniert hatte?
Meines Erachtens kopierst du mit imagecopy fehlerfrei einen leeren Bildausschnitt.
phpmanual imagecopy

und wozu ist diese if-clause?

CODE if($savecl == 1)
{
imagejpeg($image_h, $daten_dir_temp."/".$name, $quality);
imagejpeg($image_h, $quality);
}



Ausserdem kann das thumbnail verzerrt, generiert werden.
Besser ist:

CODE
$maxx=100; // maximum width
$maxy=75; // maximum height
if ($size[0]>$size[1]) {$sizemin[0]=$maxx;$sizemin[1]=$maxx/$size[0]*$size[1];
if ($sizemin[1]>$maxy){$sizemin[0]=$maxy/$sizemin[1]*$maxx;$sizemin[1]=$maxy;}}
elseif ($size[1]>$size[0]) {$sizemin[1]=$maxy;$sizemin[0]=$maxy/$size[1]*$size[0];
if ($sizemin[0]>$maxx){$sizemin[1]=$maxx/$sizemin[0]*$maxy;$sizemin[0]=$maxx;}}
elseif($size[1]=$size[0]){
if($maxy>$maxx){$maxy=$maxx;}
$sizemin[0]=$maxy;$sizemin[1]=$maxy;}



(kann sein, dass ich x und y verwechselt hab.
cool.gif
)

btw. Ausserdem hast du gar kein Fehlerhandling.

Gruss

Tümmel
 
Zurück
Oben