i got this script,in one of the very old artciles in sitepoint.
everything is ok!except that PNG and BMP images are not resized.
giving this errors

Warning: imagecreatefromwbmp() [function.imagecreatefromwbmp]: 'thumb/tb_128448486.bmp' is not a valid WBMP file in C:\wamp\www\wallsnap.php on line 97

Warning: imagewbmp(): supplied argument is not a valid Image resource in C:\wamp\www\wallsnap.php on line 105

Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\wamp\www\wallsnap.php on line 106

Warning: imagecreatefromwbmp() [function.imagecreatefromwbmp]: 'thumb/tb_128448486.bmp' is not a valid WBMP file in C:\wamp\www\wallsnap.php on line 139

Warning: imagewbmp(): supplied argument is not a valid Image resource in C:\wamp\www\wallsnap.php on line 148

Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\wamp\www\wallsnap.php on line 149

Down is the Script check it for me please.

<?php session_start();
$user=$_SESSION['user'];
$id=$_SESSION['id'];
       //include("configa.inc.php");
       // include("design.inc.php");
	    include("config.php");
	
        

		
		
		$image_dir='thumb';
		$image_dir1='thumb';
        // initialization
		
		
        $result_final = "";
        $counter = 0;
        // List of our known photo types
        $known_photo_types = array( 
           'image/pjpeg' => 'jpg',
           'image/jpeg' => 'jpg',
		   'image/gif' => 'gif',
           'image/bmp' => 'bmp',
           'image/x-png' => 'png');
        
        // GD Function Suffix List
        $gd_function_suffix = array( 
           'image/pjpeg' => 'JPEG',
           'image/jpeg' => 'JPEG',
		    'image/gif' => 'GIF',
           'image/bmp' => 'WBMP',
           'image/x-png' => 'PNG');
        // Fetch the photo array sent by preupload.php
        $photos_uploaded = $_FILES['photo_filename'];
        $photoFileName= $_FILES['photo_filename'];
        
        // Fetch the photo caption array
        $photo_caption = $_POST['photo_caption'];
        while( $counter <= count($photos_uploaded) )
        {
                if($photos_uploaded['size'][$counter] > 0)
                {
                        if(!array_key_exists($photos_uploaded['type'][$counter], $known_photo_types))
                        {
                                $result_final .= "Erro!the file is not a photo,or More than 2MB<br />";
                        }else{
						
						//create a random file name
                        $rand_name = md5(time());
                        $rand_name= rand(0,999999999);
						$filetype = $photos_uploaded['type'][$counter];
                        $extention=$known_photo_types[$filetype];
                         $filename=$rand_name.".".$extention;
                        
                                @mysql_query( "UPDATE login SET photo='$filename' WHERE user='$user'");
								 @mysql_query( "UPDATE profile SET photos='$filename' WHERE users='$user'");
                               // $new_id = mysql_insert_id();
                               // $filetype = $photos_uploaded['type'][$counter];
                                //$extention = $known_photo_types[$filetype];
                                //$filename = $new_id.".".$extention;
								
                                //@mysql_query( "UPDATE gallery_photos SET photo_filename='".addslashes($filename)."' WHERE photo_id='".addslashes($new_id)."'" );
                                // Store the orignal file
                                copy($photos_uploaded['tmp_name'][$counter], $image_dir."/tb_".$filename);
// Let's get the original image size
                                
$size = GetImageSize($image_dir."/tb_".$filename );
// First Create Thumbnail!
// Thumbnail Settings
        $Config_tbwidth_wide = 100; // width of wide image
        $Config_tbheight_wide = 75; // height of wide image
        $Config_tbwidth_tall = 75; // width of tall image
        $Config_tbheight_tall = 100; // height of tall image
// The Code
        if($size[0] > $size[1]){
            $thumbnail_width = $Config_tbwidth_wide;
            $thumbnail_height = (int)($Config_tbwidth_wide * $size[1] / $size[0]);
            if($thumbnail_height > $Config_tbheight_wide){
                $thumbnail_height = $Config_tbheight_wide;
                $thumbnail_width = (int)($Config_tbheight_wide * $size[0] / $size[1]);
            }
        }else{
            $thumbnail_width = (int)($Config_tbheight_tall * $size[0] / $size[1]);
            $thumbnail_height = $Config_tbheight_tall;
            if($thumbnail_width > $Config_tbwidth_tall){
                $thumbnail_width = $Config_tbwidth_tall;
                $thumbnail_height = (int)($Config_tbwidth_tall * $size[1] / $size[0]);
            }
        }

// Build Thumbnail with GD 2.x.x, you can use the other described methods too
$function_suffix = $gd_function_suffix[$filetype];
$function_to_read = "ImageCreateFrom".$function_suffix;
$function_to_write = "Image".$function_suffix;
// Read the source file
$source_handle = $function_to_read ( $image_dir."/tb_".$filename );
if($source_handle){
// Let's create a blank image for the thumbnail
$destination_handle = ImageCreateTrueColor ( $thumbnail_width, $thumbnail_height );
// Now we resize it
ImageCopyResampled( $destination_handle, $source_handle, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1] );
}
// Let's save the thumbnail
$function_to_write( $destination_handle, $image_dir."/".$filename );
ImageDestroy($destination_handle );
// .................................................................................
// This is the new code that checks for width and solves our problems
// .................................................................................
// Lets resize the image if its width is greater than 500 pixels
// Resized image settings
if ($size[0] > '80'){
        $Config_width_wide = 200; // width of wide image
        $Config_height_wide = 175; // height of wide image
        $Config_width_tall = 175; // width of tall image
        $Config_height_tall = 300; // height of tall image
// The Code
        if($size[0] > $size[1]){
            $image_width = $Config_width_wide;
            $image_height = (int)($Config_width_wide * $size[1] / $size[0]);
            if($image_height > $Config_height_wide){
                $image_height = $Config_height_wide;
                $image_width = (int)($Config_height_wide * $size[0] / $size[1]);
            }
        }else{
            $image_width = (int)($Config_height_tall * $size[0] / $size[1]);
            $image_height = $Config_height_tall;
            if($image_width > $Config_width_tall){
                $image_width = $Config_width_tall;
                $image_height = (int)($Config_width_tall * $size[1] / $size[0]);
            }
        }

// Build image with GD 2.x.x, you can use the other described methods too
$function_suffix = $gd_function_suffix[$filetype];
$function_to_read = "ImageCreateFrom".$function_suffix;
$function_to_write = "Image".$function_suffix;
// Read the source file
$source_handle = $function_to_read ( $image_dir."/tb_".$filename );
if($source_handle){
// Let's create a blank image for the image
$destination_handle = ImageCreateTrueColor ( $image_width, $image_height );
// Now we resize it
ImageCopyResampled( $destination_handle, $source_handle, 0, 0, 0, 0, $image_width, $image_height, $size[0], $size[1] );
}
// Let's save the image

$function_to_write( $destination_handle, $image_dir."/tb_".$filename );
ImageDestroy($destination_handle );
}

$result_final .= "<img src='".$image_dir1. "/tb_".$filename."' /><br /><font color=green>Your  profile photo was changed</font><br /> <font size=5>To continue <a href=myprofile.php>click here</a></font><br />";
$result_final.=mysql_query("INSERT INTO UPDATES SET photo='$filename',sender_id='$id'");
}
}
$counter++;
}
// Print Result
echo "$result_final";

Recommended Answers

All 2 Replies

Member Avatar for diafol

Lloks like the script is OK, but your implementation of it may be suspect. It looks as though the script can't find your files. You may need to include the document root to the file path.

Just an idea, there's no way I'm gonna wade through all that code though.

I used imageMagic instead of GD and it solved the Problem.
here is the resulting code.

<?php session_start();

 $user=$_SESSION['user'];

 $id=$_SESSION['id'];

 //include("configa.inc.php");

 // include("design.inc.php");

 include("config.php");

 $image_dir='thumb';

 $image_dir1='thumb';

 // initialization 

 $result_final = "";

 $counter = 0;

 // List of our known photo types

 $known_photo_types = array(

 'image/pjpeg' => 'jpg',

 'image/jpeg' => 'jpg',

 'image/gif' => 'gif',

 'image/bmp' => 'bmp',

 'image/x-png' => 'png');

 // Fetch the photo array sent by preupload.php

 $photos_uploaded = $_FILES['photo_filename']; 



 // Fetch the photo caption array 

 $photo_caption = $_POST['photo_caption'];

 

  // Check what is happening - remove from code when working

 echo "<br>photo_caption = ".$photo_caption;

 

 while( $counter <= count($photos_uploaded) )

 {

 if($photos_uploaded['size'][$counter] > 0)

 {

 if(!array_key_exists($photos_uploaded['type'][$counter], $known_photo_types))

 {

 $result_final .= "Erro!the file is not a photo,or More than 2MB<br />";

 }

 else{

 //create a random file name

 $rand_name = md5(time());

 $rand_name= rand(0,999999999);

 $filetype = $photos_uploaded['type'][$counter];

 

// Check what is happening - remove from code when working

 echo "<br>filetype = ".$filetype;

 

 $extention=$known_photo_types[$filetype];

 $filename=$rand_name.".".$extention;

 @mysql_query( "UPDATE login SET photo='$filename' WHERE user='$user'");

 @mysql_query( "UPDATE profile SET photos='$filename' WHERE users='$user'");

 // The orignal file

 $original_image = $photos_uploaded['tmp_name'][$counter];

 // First Create Thumbnail!

 // Thumbnail Settings

 $Config_tbwidth_wide = 100;// width of wide image

 $Config_tbheight_tall = 100;// height of tall image

 // Let's save the thumbnail

 $function_to_write = $image_dir."/".$filename ;

 exec("convert $original_image -resize {$Config_tbwidth_wide}x{$Config_tbheight_tall} -strip $function_to_write");

 

 // Check what is happening - remove from code when working

 echo "<br>Path to save thumbnail image = ".$function_to_write;

 echo "<img src=\"$function_to_write\">";

 

 // Resized image settings

 $Config_width_wide = 200; // width of wide image

 $Config_height_tall = 300; // height of tall image

 $function_to_write1 = $image_dir1."/".$filename ;

 exec("convert $original_image -resize {$Config_width_wide}x{$Config_height_tall} -strip $function_to_write1");

 

  // Check what is happening - remove from code when working

 echo "<br>Path to save thumbnail image = ".$function_to_write1;

 echo "<img src=\"$function_to_write1\">";

 

 $result_final .= "<img src='".$image_dir1. "/tb_".$filename."' /><br /><font color=green>Your  profile photo was changed</font><br /> <font size=5>To continue <a href=myprofile.php>click here</a></font><br />";

 mysql_query("INSERT INTO UPDATES SET photo='$filename',sender_id='$id'");

 }

 } $counter++;

 } // Print Result

 echo"$result_final ";  

 ?>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.