naja dorf wird der alternativ trext angezeicgt weilo er kein bild einträgt.
wenn ich das amche steht da auch grafik adresse kopieren ...
aber wenn ich die url kopiere ist das die ul der php seite.
im anhang ist zu sehen was ich sehe und auch was ich seehe beim rechtsklick.
@Gast guck dir die Funktion an, da wird ausgerechnet, welche Größen das neue Bild bekommt.
Dort lässt du das Ausrechnen (Ob Bild höher als breit ist) einfach weg und gibst für Höhe und Breite halt deine Werte an.
Ich hab mal ne Frage:
Erstmal, vielen Dank für dieses geile Schnipsel, ich benutze das schon lange auf meiner Seite. Aber es gibst Probleme mit Bildern, die Transparenz beinhalten. Bilder, die, wie ich vermute, einen Alphakanal haben, werden zwar verkleinert, aba dann komplett schwarz angezeigt. Wie kann ich also den Alphakanal entfernen und transparente Stellen beispielsweise Weiß einfärben?
Optimal wäre es natürlich, die Transparenz zu behalten =)
*edit* Bei Gif-Bildern funktioniert die Transparenz, allerding ist die HG-ebene schwarz, was die konsequenz hat, dass transpranz schwarz wird. wie bekomme ich nun die HG-ebene auch noch transparent?
Gruß,
Basti
Post wurde schon 3x editiert, das letzte mal am 30.06.2009 um 21:33 von B.C.
ich hab es nun hinbekommen
Man muss vorerst das ganze, neue Bild mit einer Farbe anmalen, ich male es also mit Transparenz an.
Danach wird das Bild draufkopiert und der Alphakanal gespeichert.
Ich habe die Funtkion mal mit Transparenz etwas verbessert:
<?php
// Erstellt ein thumbnail eines Bildes
// Ordner unter $speicherordner benötigt ggf. Schreibrechte CHMOD(777)
// Parameter:
// $imgfile: Pfad zur Bilddatei
// $speicherordner: Ordner indem die Thumbnails gespeichert werden sollen
// $filenameOnly: Soll nur der Dateiname als Name für Thumbnail verwendet werden,
// ansonsten inkl. Pfad
function thumbnail($imgfile, $speicherordner="./bilder/thumbnail/", $filenameOnly=true)
{
//Max. Größe des Thumbnail (Höhe und Breite)
$thumbsize = 192;
//Fügt den Pfad zur Datei dem Dateinamen hinzu
//Aus ordner/bilder/bild1.jpg wird dann ordner_bilder_bild1.jpg
if(!$filenameOnly)
{
$replace = array("/","\\",".");
$filename = str_replace($replace,"_",dirname($imgfile))."_".$filename;
}
//Bild erstellen
//Achtung: imagecreatetruecolor funktioniert nur bei bestimmten GD Versionen
//Falls ein Fehler auftritt, imagecreate nutzen
if(function_exists("imagecreatetruecolor"))
$thumb = imagecreatetruecolor($newwidth,$newheight);
else
$thumb = imagecreate ($newwidth,$newheight);
# **** Dieser Abschnitt ist neu **** #
// Das Bild komplett mit einer Farbe füllen
// Letzte Zahl von 0 bis 127, 127 = max. transparenz
$tranz = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
// Sollte das nicht gehen, benutze das:
// Gebe da einfach eine Farbe in RGB an, in dieser
// wird dann die Transparenz angezeigt
// $tranz = imagecolorallocate($thumb, 255, 255, 255);
imagefill($thumb, 0, 0, $tranz);
$source = imagecreatefromgif($imgfile);
}
// AUCH NEU UND MUSS SEIN
else if($endung == ".png")
{
imagePNG($thumb,$ordner."temp.png");
$thumb = imagecreatefrompng($ordner."temp.png");
könntest du mal einen beispiel code angeben ich stell mich da immer ein bissel blöd an
meine parameter sind ganz einfach :
bilder ordner = "bilder"
zielordner = "vorschau"
ich gebe immer den pfad falsch an oder irgendwas mach ich imer falsch
mit move_uploaded_file(); verschiebst du die hochgeladene Datei nur
(wie der Name schon sagt), aba wo die Datei vor der Verschiebung ist,
erfährst du so:
erstmal danke Andavos für dieses wirklich einfach zu bedienene Script. Funktioniert einwandfrei, allerdings werden bei mir die Thumbnails immer sehr dunkel, liegt das an der Größe der Bilder oder kann ich drauf noch irgendwie einwirken?
Orginal von Gast
Irgendwie funktioniert das nicht immer richtig, mannche .jpg bilder werden gar nicht oder schwarz angezeigt
Hallo,
der Thread ist uralt - wird aber immer noch gefunden. Daher will ich hier die Frage nach den schwarzen Bildern beantworten, nachdem mich die Suche ebenfalls ein paar Stunden gekostet hat und ich an der völlig falschen Stelle gesucht hatte, in der Annahme dass die verwendeten Grafikfunktionen oder die Laufzeit usw. schuld sein könnten.
GRUND:
Der Grund ist aber ganz einfach.
Die Abfragen nach den Dateiendungen ab Zeile 69 (und später nochmal ab Z:87) berücksichtigen nicht den Fall, dass die Dateiendung am Server in Großschreibung vorliegt, z.B. *.JPG statt *.jpg.
FOLGE:
1. Daher wird die Funktion imagecreatefromjpeg(...) nicht aufgerufen, die aus dem umzuwandelnden Bild die später benötigte Grafikresource für das Quellbild erzeugt.
2. Danach wird die Funktion imagecreatetruecolor(...) aufgerufen, die erst mal ein schwarzes Hintergrundbild erzeugt (siehe Manual v. PHP.de).
3. Am Ende wird mit imagecopyresized(...) dieses schwarze Bild in das Zielbild kopiert, weil die o.g. Resource fehlt.
Und schon ist das Kind in den Brunnen gefallen !
Abhilfe
PHP
1:
$endung = strtoupper($endung);
einfügen vor Zeile 69 und alle Prüfungen von .jpg auf .JPG (usw.) ändern.
Schon läuft es...
Übrigens
Die Vermutung von B.C. bzgl. des Alphakanals war also nicht der eigentliche Grund für die komplett schwarzen Bilder, aber:
möglicherweise (nicht von mir getestet) wirken sich die von ihm vorgeschlagenen Änderungen auf PNG-Grafiken aus, die Transparenz verwenden. Wer also mit dem Hintergrund von PNGs Probleme hat, sollte sich seinen Beitrag ansehen.