Results 1 to 8 of 8
  1. #1
    Join Date
    Apr 2004
    Location
    Atlanta, GA
    Posts
    541

    Converting images

    Can someone help me clean up this coding so it works properly

    PHP Code:
    $upload_path "/home/site/public_html/temp/";
    $filename $_FILES['Filedata']['tmp_name'];
    $ext explode("."$filename);
    $ext $ext[count($ext)-1];
        
        if (
    $_GET['type'] == 'reg') {    
                      
        if(
    $ext == '.jpg') {
         
    // if jpg do nothing
    }
             
        if(
    $ext == '.gif') {
        
    $res ImageCreateFromGIF($_FILES['Filedata']['tmp_name']);
        
    imagejpeg($res$newname);
    }
             
        if(
    $ext == '.bmp') {
    //need a code to convert bmp 2 jpg
            
    }
    imagedestroy($res);
        
        if(!
    move_uploaded_file($newname$upload_path session_id() . ".jpg")) {
        
    header("HTTP/1.0 500 Internal Server Error");
            }
        


  2. #2
    Join Date
    Oct 2004
    Location
    UK
    Posts
    487
    First error I can see off hand is that $ext will not return a period at the start of the string, as this is the needle.

    Example:
    PHP Code:
    $filename = array();
    $filename[] = "image.jpg";
    $filename[] = "image.gif";
    $filename[] = "image.bmp";
    $filename[] = "image.jpg.bmp";

    foreach (
    $filename as $file)
    {
        
    print_r(explode("."$file));
    }

    /*
    Output:
    Array
    (
        [0] => image
        [1] => jpg
    )
    Array
    (
        [0] => image
        [1] => gif
    )
    Array
    (
        [0] => image
        [1] => bmp
    )
    Array
    (
        [0] => image
        [1] => jpg
        [2] => bmp
    )
    */ 
    Furthermore, could you explain what exactly doesn't "work properly"?

  3. #3
    Join Date
    Feb 2003
    Location
    AR
    Posts
    2,381
    I think he's looking for a way to convert bmp to jpeg

  4. #4
    Join Date
    Apr 2004
    Location
    Atlanta, GA
    Posts
    541
    can i do something like this
    PHP Code:
    elseif($ext == '.bmp'){
    $res exec(convert $filename $newname ".jpg");


    also Xenatino, how do I apply your example to my current coding? Im still learning php.

  5. #5
    Join Date
    Oct 2004
    Location
    UK
    Posts
    487
    Remove the periods from your if() statements:

    PHP Code:

    if($ext == '.gif') { 

    // Should be


    if($ext == 'gif') { 
    Also, for converting BMP's to Jpegs, try using the following function (from php.net/imagecreate)

    PHP Code:
    <?php
    /*********************************************/
    /* Fonction: ImageCreateFromBMP              */
    /* Author:   DHKold                          */
    /* Contact:  [email protected]                */
    /* Date:     The 15th of June 2005           */
    /* Version:  2.0B                            */
    /*********************************************/

    function ImageCreateFromBMP($filename)
    {
     
    //Ouverture du fichier en mode binaire
       
    if (! $f1 fopen($filename,"rb")) return FALSE;

     
    //1 : Chargement des ent?tes FICHIER
       
    $FILE unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset"fread($f1,14));
       if (
    $FILE['file_type'] != 19778) return FALSE;

     
    //2 : Chargement des ent?tes BMP
       
    $BMP unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'.
                     
    '/Vcompression/Vsize_bitmap/Vhoriz_resolution'.
                     
    '/Vvert_resolution/Vcolors_used/Vcolors_important'fread($f1,40));
       
    $BMP['colors'] = pow(2,$BMP['bits_per_pixel']);
       if (
    $BMP['size_bitmap'] == 0$BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset'];
       
    $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8;
       
    $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']);
       
    $BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4);
       
    $BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4);
       
    $BMP['decal'] = 4-(4*$BMP['decal']);
       if (
    $BMP['decal'] == 4$BMP['decal'] = 0;

     
    //3 : Chargement des couleurs de la palette
       
    $PALETTE = array();
       if (
    $BMP['colors'] < 16777216)
       {
        
    $PALETTE unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4));
       }

     
    //4 : Cr?ation de l'image
       
    $IMG fread($f1,$BMP['size_bitmap']);
       
    $VIDE chr(0);

       
    $res imagecreatetruecolor($BMP['width'],$BMP['height']);
       
    $P 0;
       
    $Y $BMP['height']-1;
       while (
    $Y >= 0)
       {
        
    $X=0;
        while (
    $X $BMP['width'])
        {
         if (
    $BMP['bits_per_pixel'] == 24)
            
    $COLOR unpack("V",substr($IMG,$P,3).$VIDE);
         elseif (
    $BMP['bits_per_pixel'] == 16)
        { 
            
    $COLOR unpack("v",substr($IMG,$P,2));
            
    $blue  = ($COLOR[1] & 0x001f) << 3;
            
    $green = ($COLOR[1] & 0x07e0) >> 3;
            
    $red   = ($COLOR[1] & 0xf800) >> 8;
            
    $COLOR[1] = $red 65536 $green 256 $blue;
        }
         elseif (
    $BMP['bits_per_pixel'] == 8)
         { 
            
    $COLOR unpack("n",$VIDE.substr($IMG,$P,1));
            
    $COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         elseif (
    $BMP['bits_per_pixel'] == 4)
         {
            
    $COLOR unpack("n",$VIDE.substr($IMG,floor($P),1));
            if ((
    $P*2)%== 0$COLOR[1] = ($COLOR[1] >> 4) ; else $COLOR[1] = ($COLOR[1] & 0x0F);
            
    $COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         elseif (
    $BMP['bits_per_pixel'] == 1)
         {
            
    $COLOR unpack("n",$VIDE.substr($IMG,floor($P),1));
            if     ((
    $P*8)%== 0$COLOR[1] =  $COLOR[1]        >>7;
            elseif ((
    $P*8)%== 1$COLOR[1] = ($COLOR[1] & 0x40)>>6;
            elseif ((
    $P*8)%== 2$COLOR[1] = ($COLOR[1] & 0x20)>>5;
            elseif ((
    $P*8)%== 3$COLOR[1] = ($COLOR[1] & 0x10)>>4;
            elseif ((
    $P*8)%== 4$COLOR[1] = ($COLOR[1] & 0x8)>>3;
            elseif ((
    $P*8)%== 5$COLOR[1] = ($COLOR[1] & 0x4)>>2;
            elseif ((
    $P*8)%== 6$COLOR[1] = ($COLOR[1] & 0x2)>>1;
            elseif ((
    $P*8)%== 7$COLOR[1] = ($COLOR[1] & 0x1);
            
    $COLOR[1] = $PALETTE[$COLOR[1]+1];
         }
         else
            return 
    FALSE;
         
    imagesetpixel($res,$X,$Y,$COLOR[1]);
         
    $X++;
         
    $P += $BMP['bytes_per_pixel'];
        }
        
    $Y--;
        
    $P+=$BMP['decal'];
       }

     
    //Fermeture du fichier
       
    fclose($f1);

     return 
    $res;
    }
    ?>
    Last edited by Xenatino; 03-12-2008 at 05:57 PM.

  6. #6
    Join Date
    Aug 2004
    Location
    Shanghai
    Posts
    1,449
    Hi!

    I think you might find what you are searching for by simply calling "convert" from the package image "imagemagick". There is also a "php5-imagick" package:

    http://www.php.net/manual/en/ref.imagick.php

    Thomas
    GPLHost:>_ open source hosting worldwide (I'm founder, CEO & official Debian Developer)
    Servers & our leading control panel and our Xen VPS hosting, which are already included in Debian and Ubuntu
    Available in: Kuala Lumpur, Singapore, Sydney, Seattle, Atlanta, Paris, London, Barcelona, Zurich, Israel

  7. #7
    GD2 library would be the best way of doing this, IMO.

    google:
    imagecreate
    imagejpeg

    it won't let me post links

  8. #8
    Join Date
    Mar 2008
    Location
    South England
    Posts
    62
    Use google for this guys.
    As Cloned said, GD2 is the best way!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •