warum sind einige thumbs nach dem erstellen schwarz ?

melistik

Erfahrenes Mitglied
Nach dem erstellen einiger Thumbnails ( nicht bei allen ) , ist das Resultat
Schwarz-Weisses Bild ... Woran kann dieses liegen ? Liegt es am Bild ?
Mein Code mal zum angucken, ob dort ein Fehler drin ist ;) ...
PHP:
<?
$template = "template.html";
$sizelimit = "no"; //Size Limit?
$sizebytes = "200000"; //Size in Bytes
$absolute_path = "/www/htdocs/v085124/files/imagetest/pics"; //Absolute Pfad
$PicPathIn="http://www.ppone.net/files/imagetest/pics/";
$PicPathOut="/www/htdocs/v085124/files/imagetest/pics/thumb/";
$dir = "dir";
$pictyp = array (".jpg",".JPG",".jpeg",".JPEG",".png",".PNG");
$neueBreite=200;  //Thumbnail Breite, Höhe wird Proportional dazu errechnet
$quali = 100;  //Quali in % aber ohne % hinschreiben =)
$maxhoehe = 400; //Höhe in px angeben, die das Thumb maximal haben darf ...

if ($db == "")
{
    $open_template = fopen ($template, "r");
    $temp = fread($open_template, filesize($template));
    $temp = ereg_replace("{post}","$PHP_SELF?db=post",$temp);
    $temp = stripslashes($temp);
    fclose($open_template);
    echo $temp;
    }
if ($db == "post") {
$ext = strrchr($file,'.');
if (!in_array($ext,$pictyp)) {
if (file_exists("$absolute_path/$file_name")) {
die("<center>Datei existiert bereits!</center>");
}
if (($sizelimit == "yes") && ($file_size > $sizebytes)) {
die("<center>Datei ist zu groß. Sie darf nicht größer als $sizebytes bytes sein.</center>");
}
@copy($file, "$absolute_path/$file_name") or die("<center>Konnte nicht upgeloaded werden</center>");
} else {
die("<center>Datei ist kein Unterstützer Bildtyp<br> JPG und PNG sind nur zugelassen ...</center>");
}
header("Location: $PHP_SELF?db=ok&file=$file_name");
}
if ($db == "ok") {

// Orginalbild
$bild = $file;

// Bilddaten ermitteln
$size=getimagesize("$PicPathIn"."$bild");
$breite=$size[0];
$hoehe=$size[1];
$neueHoehe=intval($hoehe*$neueBreite/$breite);
for ($i = 1.1; $neueHoehe >= $maxhoehe; $i + 0.1) {
$neueHoehe = ($neueHoehe/$i);
$neueBreite = ($neueBreite/$i);  }

if($size[2]==2) {
// JPG
$altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild");
$neuesBild=imageCreate($neueBreite,$neueHoehe);
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild,"$PicPathOut"."$bild",$quali);
}

if($size[2]==3) {
// PNG
$altesBild=ImageCreateFromPNG("$PicPathIn"."$bild");
$neuesBild=imageCreate($neueBreite,$neueHoehe);
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImagePNG($neuesBild,"$PicPathOut"."$bild",$quali);
}

echo "Altes Bild:<BR>";
echo "<IMG SRC=\"$PicPathIn$bild\" WIDTH=\"$breite\" HEIGHT=\"$hoehe\"><BR><BR>";
echo "Neues Bild:<BR>";
$Thumbnail=$PicPathIn."thumb/".$bild;
echo "<IMG SRC=\"$Thumbnail\" WIDTH=\"$neueBreite\" HEIGHT=\"$neueHoehe\">";
}
?>

// EDIT =)
Und noch so eine kleine Frage ....
Wie kann man die Quali noch verbessern, obwohl man quali 100 einstellt,
denn so wie es manchmal ist, sieht es in meinen Augen einfach müllig aus ;(
 
Zuletzt bearbeitet:
versuchs vielleicht mal damit:

mach aus dem hier:
PHP:
// JPG
...
$neuesBild=imageCreate($neueBreite,$neueHoehe);
...

// PNG
...
$neuesBild=imageCreate($neueBreite,$neueHoehe);
...

das da:
PHP:
// JPG
...
$neuesBild=imageCreateTrueColor($neueBreite,$neueHoehe);
...

// PNG
...
$neuesBild=imageCreateTrueColor($neueBreite,$neueHoehe);
...
Vielleicht hilft das!

Tschö,
ludz
 
Ausserdem kannst du seit einer der neueren PHP Versionen keine Thumbnails mehr von GIF Dateien machen, da da irgendwie der Support eingestellt wurde.
 
das mit dem gif Format war mir klar ...
Das ist aber auch nicht meine Frage ;)
Vielleicht nochmal ne Frage so am Rande : Wie kann ich bilder über Bilder legen ?
Danke erst mal im vorraus ...
 
Also das ein paar Thumbs SW-werden liegt an der Tatsache, dass weniger Farben weniger Speicherplatz benötigen.
Diese Logik ist auch in der GD-Lib verankert. GD ist ja bekanntlich das für die Bilderstellung zuständige Tool in PHP.
Angesprochen wird GD z.B. durch "imageCreate" und wenn es ausrecht um eine gewisse Dateigröße zu erreichen, nimmt GD einfach die Farben raus, resized und setzt die Qualität ein wenig runter.

Ein gutes Bsp. dafür ist z.B.:
http://nichtsooft.owned.at/html/modules/My_eGallery/gallery/MODDING/thumb/iceHole01.jpg
oder
http://nichtsooft.owned.at/html/modules/My_eGallery/gallery/MODDING/thumb/fuss_mod01.jpg
 
gibt es denn noch andere Varianten um bessere Thumbs zu erstellen?
Wieso beantwortet mir keine die Frage nach Bilder über BIlder ?
Ich möchte gerne ein Bild über ein andere Bild legen, wie mache ich soetwasa ?
Gibt es sonst andere Free Bibliotheken, womit man bessere Thums erstellen kann?
mfg meli
 
Ich denke auf "Bild über Bild" antwortet dir keiner, da es soweit ich mich erinnern kann, keine möglichkeit gibt so etwas zu tun.
Und warum einige deiner Thumgs s/w werden kann ich nun wirklich nicht nachvollziehen - verzeih, wenn ich nicht deinen ganzen Code durchgucken - und auch die von nichtsooft angesprochene Sache ist mir bisher nie problematisch aufgefallen, bei den Thumbnail Scripten, die ich bis dato erstellt habe.
 
ok das mit Bildern ist abgeharkt :)
Aber das mit der Quali der Thumbs noch net.
Gibt es sonst eine andere Bibliothek, wo der Server mehr Speicher verwendet,
damit ein bessers Tumb ensteht?
Ich habe ein Webspaceangebot, wo GD-Bibliothek druf ist, jedoch kann ich da
natürlich nichts ändern. Gibt es da nicht so eine andere Bibliothek, di man draufspielen kann und diese dann Verwendet wird. Oder ne exe oder was weiss ich.
Bitte um hilfe
 
Das könnte man ganz einfach umgehen indem man statt ImageCopyResized() einfach mal ImageCopyResampled() benutzt, da ein Resize nichts neu berechnet im eigentlichen Sinne, ein Resample hingegen schon. :)
 
Zurück