Thumnail GIF -> PNG

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Thumnail GIF -> PNG

    1. Ich würde jetzt noch gerne das auch Gif geht. Hab mir so vorgstellt das alle gifs in PNG dateien umgewandelt werden geht das?


    PHP-Code:
    <?php 
    $gd2
    =checkgd();
    $pics=directory("pics","jpg,JPG,JPEG,jpeg,png,PNG");
    $pics=ditchtn($pics,"tn_");

    if (
    $pics[0]!=""){
        foreach (
    $pics as $p){
            
    createthumb("pics/".$p,"thumbs/tn_".$p,150,150);
        }
    }

    /*
        Function checkgd()
        checks the version of gd, and returns "yes" when it's higher than 2
    */
    function checkgd(){
        
    $gd2="";
        
    ob_start();
        
    phpinfo(8);
        
    $phpinfo=ob_get_contents();
        
    ob_end_clean();
        
    $phpinfo=strip_tags($phpinfo);
        
    $phpinfo=stristr($phpinfo,"gd version");
        
    $phpinfo=stristr($phpinfo,"version");
        
    preg_match('/\d/',$phpinfo,$gd);
        if (
    $gd[0]=='2'){$gd2="yes";}
        return 
    $gd2;
    }

    /*
        Function ditchtn($arr,$thumbname)
        filters out thumbnails
    */
    function ditchtn($arr,$thumbname){
        foreach (
    $arr as $item){
            if (!
    preg_match("/^".$thumbname."/",$item)){$tmparr[]=$item;}
        }
        return 
    $tmparr;
    }

    /*
        Function createthumb($name,$filename,$new_w,$new_h)
        creates a resized image
        variables:
        $name        Original filename
        $filename    Filename of the resized image
        $new_w        width of resized image
        $new_h        height of resized image
    */    
    function createthumb($name,$filename,$new_w,$new_h){
        global 
    $gd2;
        
    $system=explode(".",$name);
        if (
    preg_match("/jpg|jpeg/",$system[1])){$src_img=imagecreatefromjpeg($name);}
        if (
    preg_match("/png/",$system[1])){$src_img=imagecreatefrompng($name);}
        
    $old_x=imageSX($src_img);
        
    $old_y=imageSY($src_img);
        if (
    $old_x $old_y) {
            
    $thumb_w=$new_w;
            
    $thumb_h=$old_y*($new_h/$old_x);
        }
        if (
    $old_x $old_y) {
            
    $thumb_w=$old_x*($new_w/$old_y);
            
    $thumb_h=$new_h;
        }
        if (
    $old_x == $old_y) {
            
    $thumb_w=$new_w;
            
    $thumb_h=$new_h;
        }
        
        if (
    $gd2==""){
                
    $dst_img=ImageCreate($thumb_w,$thumb_h);
                
    imagecopyresized($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 
        }else{
            
    $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
            
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 
        }

        if (
    preg_match("/png/",$system[1])){
            
    imagepng($dst_img,$filename); 
        } else {
            
    imagejpeg($dst_img,$filename); 
        }
        
    imagedestroy($dst_img); 
        
    imagedestroy($src_img); 
    }

    /*
            Function directory($directory,$filters)
            reads the content of $directory, takes the files that apply to $filter 
            and returns an array of the filenames.
            You can specify which files to read, for example
            $files = directory(".","jpg,gif");
                    gets all jpg and gif files in this directory.
            $files = directory(".","all");
                    gets all files.
    */
    function directory($dir,$filters){
        
    $handle=opendir($dir);
        
    $files=array();
        if (
    $filters == "all"){while(($file readdir($handle))!==false){$files[] = $file;}}
        if (
    $filters != "all"){
            
    $filters=explode(",",$filters);
            while ((
    $file readdir($handle))!==false) {
                for (
    $f=0;$f<sizeof($filters);$f++):
                    
    $system=explode(".",$file);
                    if (
    $system[1] == $filters[$f]){$files[] = $file;}
                endfor;
            }
        }
        
    closedir($handle);
        return 
    $files;
    }
    ?>
    danke für die hilfe.
    www.gimler.de

  • #2
    wo ist das problem?
    - frag ab, obs ein gif ist => imagecreatefromgif()
    - vor der ausgabe fragst du, ob jpeg, wenn nicht, schreibe png (also für png und gif)

    am rande bemerkt:
    - mit getimagesize() ermittelst du besser, welcher grafiktyp vorliegt. schau mal ins manual.
    - deine funktion checkgd lässt sich optimieren => http://www.php-resource.de/forum/sho...t=unabh%E4ngig
    - ...
    Kissolino.com

    Kommentar

    Lädt...
    X