Zufalls Signatur / Bild
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
animation
august
bild
code
datei
element
empfohlen hinweis
ergebnis
extension
file
final image
header
image
masse
maximalwert
ordner
parameter
pfad
type
url
-
Hallo zusammen,
Das hier verwende ich nun jetzt schon länger für manche Foren als Zufallssignatur:
Leider gehen nur *.png Bilder. Nun möchte ich aber ein *.gif Bild dabei haben. Kann mir jemand sagen wie das geht bzw. ist so freundlich die Datei / den Quellcode umzubauen?<?php /**************************** * Rotating Signature * * by Ataman * * August 29th 2011 * ****************************/ //************************************************************* //**** Allgemeiner Hinweis: **** //**** Nicht benötigte Features sollten deaktiviert **** //**** werden um unnötige Rechenleistung zu sparen. **** //**** TRUE = Aktiviert, FALSE = Deaktiviert **** //**** -------------------------------------------- **** //**** Eure Bilder werden NICHT durch dieses Skript **** //**** verändert oder gelöscht. **** //************************************************************* /*** Der Pfad, relativ, zum Ordner mit den euren Bildern ***/ /*** Mit ./ wird der Ordner gewählt, in dem sich diese Datei befindet. ***/ /*** Das / am Ende nicht vergessen! ***/ $directory = "./"; /*** Bilder mit Alphakanal benötigen eine zusätzliche Bearbeitung, damit sie korrekt angezeigt werden. ***/ $doAlpha = TRUE; /*** Dieses Feature skaliert jedes Bild auf eine vorgegebene Grösse bevor es angezeigt wird. ***/ /*** Die Masse werden über per URL übergeben, die hier einstellbaren Werte stellen das Maximum ein ***/ /*** Die Bildproportionen werden beibehalten. ***/ /*** Beispiel: http://meinplatz.de/sig.php?h=300&w=100 /*** Minecraft.de erlaubt eine maximale Signaturhöhe von 125px. ***/ /*** ACHTUNG!: Zu hohe Werte werden definitiv NICHT empfohlen! ***/ /*** HINWEIS: Ist dieses Feature aktiviert wird ohne URL-Parameter der Maximalwert gewählt. ***/ $doResize = FALSE; $maxWidth = 580; $maxHeight = 125; //******************************************************************** //**** AB HIER NICHTS VERÄNDERN! (Ausser du weisst, was du tust). **** //******************************************************************** //Error-reporting with images doesn't work anyway. ;) error_reporting(E_PARSE); //Scan directory, suppress warning $files = scandir($directory); //Validate $_GET-Params if($_GET['h'] > $maxHeight || !isset($_GET['h'])) { $setHeight = $maxHeight; } else { $setHeight = $_GET['h']; } if($_GET['w'] > $maxWidth || !isset($_GET['w'])) { $setWidth = $maxWidth; } else { $setWidth = $_GET['w']; } if($files != FALSE) { //Check for .png-extensions //Kick non-images out foreach ($files as $key => $value){ if(pathinfo($value, PATHINFO_EXTENSION) != 'png') unset($files[$key]); } //Resort the array sort($files); //Count all elements $imageCount = count($files); if($imageCount != 0) { //Reduce counted elements by 1 $imageCount--; //Pick a random entry. $choice = $directory.$files[rand(0,$imageCount)]; } else { $error = "No images found in directory."; } } else { $error = "Error while scanning directory."; } //Create PNG-Header header("Content-type: image/png"); if(isset($error)) { //We got an error, oO! Print it $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } else { //Create image with picked path $image = imagecreatefrompng($choice); if(!$image) { $error = $choice." is not a valid PNG"; $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } if($doResize) { //Resize image //Get new dimensions $originalWidth = imagesx($image); $originalHeight = imagesy($image); $originalRatio = $originalWidth/$originalHeight; if ($setWidth/$setHeight > $originalRatio) { $setWidth = $setHeight*$originalRatio; } else { $setHeight = $setWidth/$originalRatio; } //Resample $resampledImage = imagecreatetruecolor($setWidth, $setHeight); if($doAlpha) { //Include alphachannel imagealphablending($resampledImage, false); imagesavealpha($resampledImage, true); $doAlpha = FALSE; } imagecopyresampled($resampledImage, $image, 0, 0, 0, 0, $setWidth, $setHeight, $originalWidth, $originalHeight); $image = $resampledImage; $doResize = FALSE; } if($doAlpha) { //Include alphachannel imagealphablending($image, false); imagesavealpha($image, true); $doAlpha = FALSE; } } //Create the final image imagepng($image); //Do some cleaning if(isset($error)) { imagecolordeallocate($white); imagecolordeallocate($red); } imagedestroy($image); if(isset($resampledImage)) { imagedestroy($resampledImaged); } ?>
Ich habe selbst schon versucht ein par Dinge rauszulöschen. Funktioniert aber nicht. Ich selbst habe auch keine Ahnung von PHP.
Grüsse weissertiger2 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
Gruß
staymyfriend
Beitrag zuletzt geändert: 4.1.2012 18:08:51 von staymyfriend -
staymyfriend schrieb:
Ich habe angenommen dass du auch gif-Bilder akzeptiert haben möchtest. Es wird trotzdem alles als png-Bild ausgegeben.
möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
Ich hab dein Script soweit umgebaut:<?php /**************************** * Rotating Signature * * by Ataman * * August 29th 2011 * ****************************/ //************************************************************* //**** Allgemeiner Hinweis: **** //**** Nicht benötigte Features sollten deaktiviert **** //**** werden um unnötige Rechenleistung zu sparen. **** //**** TRUE = Aktiviert, FALSE = Deaktiviert **** //**** -------------------------------------------- **** //**** Eure Bilder werden NICHT durch dieses Skript **** //**** verändert oder gelöscht. **** //************************************************************* /*** Der Pfad, relativ, zum Ordner mit den euren Bildern ***/ /*** Mit ./ wird der Ordner gewählt, in dem sich diese Datei befindet. ***/ /*** Das / am Ende nicht vergessen! ***/ $directory = "./"; /*** Bilder mit Alphakanal benötigen eine zusätzliche Bearbeitung, damit sie korrekt angezeigt werden. ***/ $doAlpha = TRUE; /*** Dieses Feature skaliert jedes Bild auf eine vorgegebene Grösse bevor es angezeigt wird. ***/ /*** Die Masse werden über per URL übergeben, die hier einstellbaren Werte stellen das Maximum ein ***/ /*** Die Bildproportionen werden beibehalten. ***/ /*** Beispiel: http://meinplatz.de/sig.php?h=300&w=100 /*** Minecraft.de erlaubt eine maximale Signaturhöhe von 125px. ***/ /*** ACHTUNG!: Zu hohe Werte werden definitiv NICHT empfohlen! ***/ /*** HINWEIS: Ist dieses Feature aktiviert wird ohne URL-Parameter der Maximalwert gewählt. ***/ $doResize = FALSE; $maxWidth = 580; $maxHeight = 125; //******************************************************************** //**** AB HIER NICHTS VERÄNDERN! (Ausser du weisst, was du tust). **** //******************************************************************** //Error-reporting with images doesn't work anyway. ;) error_reporting(E_PARSE); //Scan directory, suppress warning $files = scandir($directory); //Validate $_GET-Params if($_GET['h'] > $maxHeight || !isset($_GET['h'])) { $setHeight = $maxHeight; } else { $setHeight = $_GET['h']; } if($_GET['w'] > $maxWidth || !isset($_GET['w'])) { $setWidth = $maxWidth; } else { $setWidth = $_GET['w']; } if($files != FALSE) { //Check for .png-extensions //Kick non-images out foreach ($files as $key => $value) { $extension = pathinfo($value, PATHINFO_EXTENSION); if($extension != 'png' && $extension != 'gif') unset($files[$key]); } //Resort the array sort($files); //Count all elements $imageCount = count($files); if($imageCount != 0) { //Reduce counted elements by 1 $imageCount--; //Pick a random entry. $choice = $directory.$files[rand(0,$imageCount)]; } else { $error = "No images found in directory."; } } else { $error = "Error while scanning directory."; } //Create PNG-Header header("Content-type: image/png"); if(isset($error)) { //We got an error, oO! Print it $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } else { //Create image with picked path $extension = pathinfo($choice, PATHINFO_EXTENSION); $image = 0; if($extension == 'png') $image = imagecreatefrompng($choice); else $image = imagecreatefromgif($choice); if(!$image) { $error = $choice." is not a valid PNG"; $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } if($doResize) { //Resize image //Get new dimensions $originalWidth = imagesx($image); $originalHeight = imagesy($image); $originalRatio = $originalWidth/$originalHeight; if($setWidth/$setHeight > $originalRatio) { $setWidth = $setHeight*$originalRatio; } else { $setHeight = $setWidth/$originalRatio; } //Resample $resampledImage = imagecreatetruecolor($setWidth, $setHeight); if($doAlpha) { //Include alphachannel imagealphablending($resampledImage, false); imagesavealpha($resampledImage, true); $doAlpha = FALSE; } imagecopyresampled($resampledImage, $image, 0, 0, 0, 0, $setWidth, $setHeight, $originalWidth, $originalHeight); $image = $resampledImage; $doResize = FALSE; } if($doAlpha) { //Include alphachannel imagealphablending($image, false); imagesavealpha($image, true); $doAlpha = FALSE; } } //Create the final image imagepng($image); //Do some cleaning if(isset($error)) { imagecolordeallocate($white); imagecolordeallocate($red); } imagedestroy($image); if(isset($resampledImage)) { imagedestroy($resampledImaged); } ?>
weissertiger2 schrieb:
Das solltest du bald mal ändern.
Ich selbst habe auch keine Ahnung von PHP. -
staymyfriend schrieb:
So wie ich die verstehe, das zweite. Also das *.gif Bilder akzeptiert werden. Im Original zustand erscheint ja leider nur eine Fehlermeldung sobald ich ein gif Bild in den Ordner hereinschmeiße.
möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
hackyourlife schrieb:
Danke viel mal für das neue Script, doch leider habe ich es ein wenig anders gedacht. Währe es möglich wenn es ein gif Bild bleibt? Also so, das die Animation erhalten bleibt?
Es wird trotzdem alles als png-Bild ausgegeben.
hackyourlife schrieb:
Wenn das so einfach währe
weissertiger2 schrieb:
Das solltest du bald mal ändern.
Ich selbst habe auch keine Ahnung von PHP. -
weissertiger2 schrieb:
Das Einfachste ist wenn das GIF-Bild gar nicht bearbeitet werden muss (kein resize): dann kannst du es mit readfile direkt ausgeben, wodurch die Animation auf jeden Fall erhalten bleibt. Alles andere wird mindestens umständlich.
staymyfriend schrieb:
So wie ich die verstehe, das zweite. Also das *.gif Bilder akzeptiert werden. Im Original zustand erscheint ja leider nur eine Fehlermeldung sobald ich ein gif Bild in den Ordner hereinschmeiße.
möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
hackyourlife schrieb:
Danke viel mal für das neue Script, doch leider habe ich es ein wenig anders gedacht. Währe es möglich wenn es ein gif Bild bleibt? Also so, das die Animation erhalten bleibt?
Es wird trotzdem alles als png-Bild ausgegeben.
Also hier mal der soweit geänderte Code damit das GIF unangetastet bleibt:<?php /**************************** * Rotating Signature * * by Ataman * * August 29th 2011 * ****************************/ //************************************************************* //**** Allgemeiner Hinweis: **** //**** Nicht benötigte Features sollten deaktiviert **** //**** werden um unnötige Rechenleistung zu sparen. **** //**** TRUE = Aktiviert, FALSE = Deaktiviert **** //**** -------------------------------------------- **** //**** Eure Bilder werden NICHT durch dieses Skript **** //**** verändert oder gelöscht. **** //************************************************************* /*** Der Pfad, relativ, zum Ordner mit den euren Bildern ***/ /*** Mit ./ wird der Ordner gewählt, in dem sich diese Datei befindet. ***/ /*** Das / am Ende nicht vergessen! ***/ $directory = "./"; /*** Bilder mit Alphakanal benötigen eine zusätzliche Bearbeitung, damit sie korrekt angezeigt werden. ***/ $doAlpha = TRUE; /*** Dieses Feature skaliert jedes Bild auf eine vorgegebene Grösse bevor es angezeigt wird. ***/ /*** Die Masse werden über per URL übergeben, die hier einstellbaren Werte stellen das Maximum ein ***/ /*** Die Bildproportionen werden beibehalten. ***/ /*** Beispiel: http://meinplatz.de/sig.php?h=300&w=100 /*** Minecraft.de erlaubt eine maximale Signaturhöhe von 125px. ***/ /*** ACHTUNG!: Zu hohe Werte werden definitiv NICHT empfohlen! ***/ /*** HINWEIS: Ist dieses Feature aktiviert wird ohne URL-Parameter der Maximalwert gewählt. ***/ $doResize = FALSE; $maxWidth = 580; $maxHeight = 125; //******************************************************************** //**** AB HIER NICHTS VERÄNDERN! (Ausser du weisst, was du tust). **** //******************************************************************** //Error-reporting with images doesn't work anyway. ;) error_reporting(E_PARSE); //Scan directory, suppress warning $files = scandir($directory); //Validate $_GET-Params if($_GET['h'] > $maxHeight || !isset($_GET['h'])) { $setHeight = $maxHeight; } else { $setHeight = $_GET['h']; } if($_GET['w'] > $maxWidth || !isset($_GET['w'])) { $setWidth = $maxWidth; } else { $setWidth = $_GET['w']; } if($files != FALSE) { //Check for .png-extensions //Kick non-images out foreach ($files as $key => $value) { $extension = pathinfo($value, PATHINFO_EXTENSION); if($extension != 'png' && $extension != 'gif') unset($files[$key]); } //Resort the array sort($files); //Count all elements $imageCount = count($files); if($imageCount != 0) { //Reduce counted elements by 1 $imageCount--; //Pick a random entry. $choice = $directory.$files[rand(0,$imageCount)]; } else { $error = "No images found in directory."; } } else { $error = "Error while scanning directory."; } //Create PNG-Header header("Content-type: image/png"); if(isset($error)) { //We got an error, oO! Print it $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } else { //Create image with picked path $extension = pathinfo($choice, PATHINFO_EXTENSION); $image = 0; if($extension == 'png') $image = imagecreatefrompng($choice); else if($extension == 'gif') { //$image = imagecreatefromgif($choice); header('Content-type: image/gif'); readfile($choice); exit(); } if(!$image) { $error = $choice." is not a valid PNG"; $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } if($doResize) { //Resize image //Get new dimensions $originalWidth = imagesx($image); $originalHeight = imagesy($image); $originalRatio = $originalWidth/$originalHeight; if($setWidth/$setHeight > $originalRatio) { $setWidth = $setHeight*$originalRatio; } else { $setHeight = $setWidth/$originalRatio; } //Resample $resampledImage = imagecreatetruecolor($setWidth, $setHeight); if($doAlpha) { //Include alphachannel imagealphablending($resampledImage, false); imagesavealpha($resampledImage, true); $doAlpha = FALSE; } imagecopyresampled($resampledImage, $image, 0, 0, 0, 0, $setWidth, $setHeight, $originalWidth, $originalHeight); $image = $resampledImage; $doResize = FALSE; } if($doAlpha) { //Include alphachannel imagealphablending($image, false); imagesavealpha($image, true); $doAlpha = FALSE; } } //Create the final image imagepng($image); //Do some cleaning if(isset($error)) { imagecolordeallocate($white); imagecolordeallocate($red); } imagedestroy($image); if(isset($resampledImage)) { imagedestroy($resampledImaged); } ?>
-
hackyourlife schrieb:
Oh, danke viel mal .
weissertiger2 schrieb:
Das Einfachste ist wenn das GIF-Bild gar nicht bearbeitet werden muss (kein resize): dann kannst du es mit readfile direkt ausgeben, wodurch die Animation auf jeden Fall erhalten bleibt. Alles andere wird mindestens umständlich.
staymyfriend schrieb:
So wie ich die verstehe, das zweite. Also das *.gif Bilder akzeptiert werden. Im Original zustand erscheint ja leider nur eine Fehlermeldung sobald ich ein gif Bild in den Ordner hereinschmeiße.
möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
hackyourlife schrieb:
Danke viel mal für das neue Script, doch leider habe ich es ein wenig anders gedacht. Währe es möglich wenn es ein gif Bild bleibt? Also so, das die Animation erhalten bleibt?
Es wird trotzdem alles als png-Bild ausgegeben.
Also hier mal der soweit geänderte Code damit das GIF unangetastet bleibt:<?php /**************************** * Rotating Signature * * by Ataman * * August 29th 2011 * ****************************/ //************************************************************* //**** Allgemeiner Hinweis: **** //**** Nicht benötigte Features sollten deaktiviert **** //**** werden um unnötige Rechenleistung zu sparen. **** //**** TRUE = Aktiviert, FALSE = Deaktiviert **** //**** -------------------------------------------- **** //**** Eure Bilder werden NICHT durch dieses Skript **** //**** verändert oder gelöscht. **** //************************************************************* /*** Der Pfad, relativ, zum Ordner mit den euren Bildern ***/ /*** Mit ./ wird der Ordner gewählt, in dem sich diese Datei befindet. ***/ /*** Das / am Ende nicht vergessen! ***/ $directory = "./"; /*** Bilder mit Alphakanal benötigen eine zusätzliche Bearbeitung, damit sie korrekt angezeigt werden. ***/ $doAlpha = TRUE; /*** Dieses Feature skaliert jedes Bild auf eine vorgegebene Grösse bevor es angezeigt wird. ***/ /*** Die Masse werden über per URL übergeben, die hier einstellbaren Werte stellen das Maximum ein ***/ /*** Die Bildproportionen werden beibehalten. ***/ /*** Beispiel: http://meinplatz.de/sig.php?h=300&w=100 /*** Minecraft.de erlaubt eine maximale Signaturhöhe von 125px. ***/ /*** ACHTUNG!: Zu hohe Werte werden definitiv NICHT empfohlen! ***/ /*** HINWEIS: Ist dieses Feature aktiviert wird ohne URL-Parameter der Maximalwert gewählt. ***/ $doResize = FALSE; $maxWidth = 580; $maxHeight = 125; //******************************************************************** //**** AB HIER NICHTS VERÄNDERN! (Ausser du weisst, was du tust). **** //******************************************************************** //Error-reporting with images doesn't work anyway. ;) error_reporting(E_PARSE); //Scan directory, suppress warning $files = scandir($directory); //Validate $_GET-Params if($_GET['h'] > $maxHeight || !isset($_GET['h'])) { $setHeight = $maxHeight; } else { $setHeight = $_GET['h']; } if($_GET['w'] > $maxWidth || !isset($_GET['w'])) { $setWidth = $maxWidth; } else { $setWidth = $_GET['w']; } if($files != FALSE) { //Check for .png-extensions //Kick non-images out foreach ($files as $key => $value) { $extension = pathinfo($value, PATHINFO_EXTENSION); if($extension != 'png' && $extension != 'gif') unset($files[$key]); } //Resort the array sort($files); //Count all elements $imageCount = count($files); if($imageCount != 0) { //Reduce counted elements by 1 $imageCount--; //Pick a random entry. $choice = $directory.$files[rand(0,$imageCount)]; } else { $error = "No images found in directory."; } } else { $error = "Error while scanning directory."; } //Create PNG-Header header("Content-type: image/png"); if(isset($error)) { //We got an error, oO! Print it $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } else { //Create image with picked path $extension = pathinfo($choice, PATHINFO_EXTENSION); $image = 0; if($extension == 'png') $image = imagecreatefrompng($choice); else if($extension == 'gif') { //$image = imagecreatefromgif($choice); header('Content-type: image/gif'); readfile($choice); exit(); } if(!$image) { $error = $choice." is not a valid PNG"; $image = imagecreate(300, 50); $white = imagecolorallocate($image, 255, 255, 255); $red = imagecolorallocate($image, 152, 0, 55); imagestring($image, 2, 0, 0, $error, $red); } if($doResize) { //Resize image //Get new dimensions $originalWidth = imagesx($image); $originalHeight = imagesy($image); $originalRatio = $originalWidth/$originalHeight; if($setWidth/$setHeight > $originalRatio) { $setWidth = $setHeight*$originalRatio; } else { $setHeight = $setWidth/$originalRatio; } //Resample $resampledImage = imagecreatetruecolor($setWidth, $setHeight); if($doAlpha) { //Include alphachannel imagealphablending($resampledImage, false); imagesavealpha($resampledImage, true); $doAlpha = FALSE; } imagecopyresampled($resampledImage, $image, 0, 0, 0, 0, $setWidth, $setHeight, $originalWidth, $originalHeight); $image = $resampledImage; $doResize = FALSE; } if($doAlpha) { //Include alphachannel imagealphablending($image, false); imagesavealpha($image, true); $doAlpha = FALSE; } } //Create the final image imagepng($image); //Do some cleaning if(isset($error)) { imagecolordeallocate($white); imagecolordeallocate($red); } imagedestroy($image); if(isset($resampledImage)) { imagedestroy($resampledImaged); } ?>
Funktioniert genau so wie ich es haben wollte . -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage