kostenloser Webspace werbefrei: lima-city


Zufalls Signatur / Bild

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    weissertiger2

    Kostenloser Webspace von weissertiger2

    weissertiger2 hat kostenlosen Webspace.

    Hallo zusammen,
    Das hier verwende ich nun jetzt schon länger für manche Foren als Zufallssignatur:
    <?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); 
    } 
         
    
    ?>
    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?
    Ich habe selbst schon versucht ein par Dinge rauszulöschen. Funktioniert aber nicht. Ich selbst habe auch keine Ahnung von PHP.

    Grüsse weissertiger2
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    staymyfriend schrieb:
    möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
    Ich habe angenommen dass du auch gif-Bilder akzeptiert haben möchtest. Es wird trotzdem alles als png-Bild ausgegeben.
    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:
    Ich selbst habe auch keine Ahnung von PHP.
    Das solltest du bald mal ändern. :biggrin:
  5. Autor dieses Themas

    weissertiger2

    Kostenloser Webspace von weissertiger2

    weissertiger2 hat kostenlosen Webspace.

    staymyfriend schrieb:
    möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
    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.

    hackyourlife schrieb:
    Es wird trotzdem alles als png-Bild ausgegeben.
    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?

    hackyourlife schrieb:
    weissertiger2 schrieb:
    Ich selbst habe auch keine Ahnung von PHP.
    Das solltest du bald mal ändern. :biggrin:
    Wenn das so einfach währe :biggrin:
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    weissertiger2 schrieb:
    staymyfriend schrieb:
    möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
    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.

    hackyourlife schrieb:
    Es wird trotzdem alles als png-Bild ausgegeben.
    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?
    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.

    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);
    }
    
    
    ?>
  7. Autor dieses Themas

    weissertiger2

    Kostenloser Webspace von weissertiger2

    weissertiger2 hat kostenlosen Webspace.

    hackyourlife schrieb:
    weissertiger2 schrieb:
    staymyfriend schrieb:
    möchtest Du als Ergebnis ein gif-Bild oder dass auch gif-Bilder als Zufallssignatur vom Script akzeptiert werden?
    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.

    hackyourlife schrieb:
    Es wird trotzdem alles als png-Bild ausgegeben.
    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?
    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.

    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);
    }
    
    
    ?>
    Oh, danke viel mal :thumb:.
    Funktioniert genau so wie ich es haben wollte :smile:.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!