Jump to content

displaying only thumbnail images


scorponok

Recommended Posts

hi all

I am finishing off the final touches to my PHP postcard script and want to be able to display thumb file types only

I have found a script to resize the images but this creates larger ones so i want to be able to switch between the two.

 

<?php
// CHANGE PARAMETERS HERE BEGIN
$senderName  = " Holidays From Home "; // Eg.: John's Postcards
$senderEmail = "holidaysfromhome@voluntary.awardspace.co.uk";  // Eg.: john@postcard.com
// Change only if you have problems with urls
$postcardURL = "http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
// CHANGE PARAMETERS HERE END
$result = 0;
$msg = "";
$msg1 = "";
$pic = "";

function displayPhotos() //edit photos and change image sizes 
{
global $pic;
$columns = 5;
$act = 0;
$act1 = 0;
$sel = 0;
  // Open the actual directory
if($handle = opendir("thumbs"))
{
  // Read all file from the actual directory
  while($file = readdir($handle))
  {
   if(!is_dir($file))
   {
    if(isset($pic[1]))
    {
     if($pic[1] == $act1){$sel = "checked";}
     else{$sel = "unchecked";}
     }
    if($act == 0){echo "<tr>";}
    echo "<td align='center'><img src='thumbs/$file' alt='postcard' BORDER =1 /><br/><input type='radio' name='selimg' value='$file,$act1' $sel/></td>"; //displays the images

$act++;
    $act1++;
    if($act == $columns){$act = 0;echo "</tr>";}

       }
    }
  echo "</tr>";
  }    
}
?>

 

my thumbnail images all end in (_th.jpg) and my large files all end in (.jpg). I am really stuck any help would be much appreciated  :confused:

 

 

Link to comment
Share on other sites

All your images are in the "thumbs" directory - even the non-thumbs? A simple fix would be to have the in different folders. But, there is still an easy fix. Instead of using opendir() and then reading all the files, just use glob().

 

I cleaned up the logic as well. It looks like you are determining the selected image according to the order in which the images are displayed. You really should be using a unique ID for that. I would also suggest passing $pic to the function instead of referencing it through the global name space

<?php
// CHANGE PARAMETERS HERE BEGIN
$senderName  = " Holidays From Home "; // Eg.: John's Postcards
$senderEmail = "holidaysfromhome@voluntary.awardspace.co.uk";  // Eg.: john@postcard.com
// Change only if you have problems with urls
$postcardURL = "http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
// CHANGE PARAMETERS HERE END
$result = 0;
$msg = "";
$msg1 = "";
$pic = "";

function displayPhotos() //edit photos and change image sizes 
{
    global $pic;
    $columns = 5;
    $count = 0;

    //Get all thumb files
    $thumbs = glob('thumbs/*_th.jpg');
    // Read all file from the actual directory
    foreach($thumbs as $file)
    {
        $count++;
        //Open row if first record for row
        if($count%$columns==1) { echo "<tr>"; }

        $checked = (isset($pic[1]) && $pic[1]==$count) ? ' checked="checked"' : '';
        //displays the images
        echo "<td align=\"center\">";
        echo "<img src=\"thumbs/{$file}\" alt=\"postcard\" border=\"1\" /><br/>";
        echo "<input type=\"radio\" name=\"selimg\" value=\"{$file},{$act1}\"{$checked}/>";
        echo "</td>";
        $act++;
        $act1++;
        //Close row if columns count reached
        if($count%$columns==0) { echo "</tr>"; }
    }
    //Close last row
    if($count%$columns!=0) { echo "</tr>"; }
}
?>

Link to comment
Share on other sites

hi, tired that the images did not display at all. I also realised i didn't include the entire script here is the form part etc..

 

<?php
// CHANGE PARAMETERS HERE BEGIN
$senderName  = " Holidays From Home "; // Eg.: John's Postcards
$senderEmail = "holidaysfromhome@voluntary.awardspace.co.uk";  // Eg.: john@postcard.com
// Change only if you have problems with urls
$postcardURL = "http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
// CHANGE PARAMETERS HERE END
$result = 0;
$msg = "";
$msg1 = "";
$pic = "";

function displayPhotos() //edit photos and change image sizes 
{
global $pic;
    $columns = 5;
    $count = 0;
$act = 0;
$act1 = 0;
$sel = 0;
    $checked = 0;
    //Get all thumb files
    $thumbs = glob('thumbs/*_th.jpg');
    // Read all file from the actual directory
    foreach($thumbs as $file)
    {
        $count++;
        //Open row if first record for row
        if($count%$columns==1) { echo "<tr>"; }

        $checked = (isset($pic[1]) && $pic[1]==$count) ? ' checked="checked"' : '';
        //displays the images
        echo "<td align=\"center\">";
        echo "<img src=\"thumbs/{$file}\" alt=\"postcard\" border=\"1\"/><br/>";
        echo "<input type=\"radio\" name=\"selimg\" value=\"{$file},{$act1}\"{$checked}/>";
        echo "</td>";
        $act++;
        $act1++;
        //Close row if columns count reached
        if($count%$columns==0) { echo "</tr>"; }
    }
    //Close last row
    if($count%$columns!=0) { echo "</tr>"; }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Micro Postcard</title>
<link href= "style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main">
<div class="style1" id="caption">
<div align="left" class="style1"></div>
</div>
   <?php //makes sure form is correctly filled in 
    if(!empty($_POST["submit"]))
{
  if(empty($_POST["selimg"])){$msg = "Please select an image from above!";$result = 3;}
  else{$pic = explode(",",$_POST["selimg"]);}
  if(empty($_POST["email"]) && empty($result)){$msg1 = "You must enter an email address!";$result = 3;}
  $secCode = empty($_POST["secCode"]) ? "" : strtolower($_POST["secCode"]);
  if($secCode == $_SESSION["securityCode"] && $result != 3) //if security code is successfull continue sending script
  {
   $filename = date("YmdGis");
   $f = fopen("messages/".$filename.".txt","w+");
   fwrite($f,$pic[0]."\n");
   fwrite($f,$_POST['email']."\n");
   fwrite($f,stripslashes($_POST["message"])."\n");
   fclose($f);
   // Message displayed in email note \r\n lines to create lines 
   $from = "From: $senderName <$senderEmail>\r\n";
   $replay = "Reply-To: $senderEmail\r\n";    
   $params = "MIME-Version: 1.0\r\n";
   $params .= "Content-type: text/plain; charset=iso-8859-1\r\n";
   $mailtext = "You have just received a Virtual Postcard!\r\n\r\n
                You can pick up your postcard at the following web address:\r\n
                $postcardURL?show=$filename\r\n\r\n
                We hope you enjoy your postcard, and if you do, please take a moment to send a few yourself!\r\n\r\n
                Regards,\r\n
                Holidays From Home\r\n
                $postcardURL"; //URL of psotcard image
   // Send email
   @mail($_POST["email"],"You've received a postcard",$mailtext,$from.$replay.$params);
      echo "<center>
          Your postcard was sent successfully!<br /><br /> 
          <img src='images/$pic[0]' alt='postcard' /><br /><br /><br />".stripslashes($_POST["message"]). //message displayed if postcard sent successfully
        "</center>";
   $result = 1;
   
   }
  else{if($result != 3){$result = 2;}}
  }
if(!empty($_GET["show"]))
{
  $file = $_GET["show"];
  $content = file("messages/$file.txt");
  $pic = $content[0];
  unset($content[0]);
  unset($content[1]);
  foreach($content as $value){$main .= $value;}
  echo "<center>
         Your postcard!<br /><br />
         <img src='images/$pic' alt='postcard'/><br /><br /><br />$main
        </center>";
  }
?>
<?php if((empty($result) || $result == 2 || $result == 3) && empty($_GET["show"]))
{ 
?>
         <form action='#' method='post'>
         <table align='center'> 
<?php displayPhotos();?>


<?php echo "<div style='color:#f00;font-size:10px;'> $msg </div>" ?>
</table> 
      <h2>Fill in the Form and then click on Send Card!!</h2>
          <tr><td>Send to (email address):</tr> 
          <input type='text' name='email' size='30' value='<?php echo (isset($_POST["email"])) ? htmlspecialchars($_POST['email']) : '';?>' />
          <?php echo "<div style='color:#f00;font-size:10px;'> $msg1 </div>" ?>
          <p> 
          </p>
          <tr><td>Message:</td><td>  <p>
        <textarea name='message' rows='10' cols='40'<?php echo (isset($_POST["message"])) ? htmlspecialchars($_POST['message']) : '';?> ></textarea>          
              <p>                <?php echo
   "</td></tr>
          <tr><td colspan='2'> ";
        

	echo "</tr>
        		  <tr>
          		  <td>Security code: <input class='text' name='secCode' type='text' size='10' />
           		  </td><td><img src='securityCode.php' alt='security code' border='1' /></td>
                  </tr>
          		  <tr><td colspan='2'></tr>
			  <tr><td colspan='2' align='left'><input type='submit' value='Send card!' name='submit'/></td></tr>
         		  </table>
                  </form>";
			  echo ($result == 2) ? "<div style='color:#f00;font-size:10px;'> Security code invalid!": " </div>";

} 
?>

 

My apoligies about  i wasn't sure if you needed the rest of it or not.

Link to comment
Share on other sites

Well, I'm not guaranteeing that there are no errors in the code I provided. Did you get any errors? glob() is the solution you need.

 

Try the following to see if it is at least getting the files you want:

echo "<pre>";
print_r(glob('thumbs/*_th.jpg'));
echo "</pre>";

Link to comment
Share on other sites

here is the resize image script

$columns     = 5;
$thmb_width  = 120;
$thmb_height = 80;

function resizeImage($originalImage,$toWidth,$toHeight){
    
    // Get the original geometry and calculate scales
    list($width, $height) = getimagesize($originalImage);
    $xscale=$width/$toWidth;
    $yscale=$height/$toHeight;
    
    // Recalculate new size with default ratio
    if ($yscale>$xscale){
        $new_width = round($width * (1/$yscale));
        $new_height = round($height * (1/$yscale));
    }
    else {
        $new_width = round($width * (1/$xscale));
        $new_height = round($height * (1/$xscale));
    }
    // Resize the original image
    $imageResized = imagecreatetruecolor($new_width, $new_height);
    $imageTmp     = imagecreatefromjpeg ($originalImage);
    imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    return $imageResized;
} 

function generateThumbnails(){
global $thmb_width,$thmb_height;

// Open the actual directory
if ($handle = opendir(".")) {
	// Read all file from the actual directory
	while ($file = readdir($handle))  {
		// Check whether tha actual item is a valid file
		if (is_file($file)){
			// Check whether the actual image is a thumbnail
      		if (strpos($file,'_th.jpg')){
      			$isThumb = true;
      		} else {
	      		$isThumb = false;
	      	}
      	  {continue;}
      		if (!$isThumb) {
	      		// Process the file string
      			$dirName  = substr($file,0,strpos($file,basename($file)));
      			if (strlen($dirName) < 1) $dirName = '.';
      			$fileName = basename($file);
      			$fileMain = substr($fileName,0,strrpos($fileName,'.'));
      			$extName  = substr($fileName,strrpos($fileName,'.'),
      								strlen($fileName)-strrpos($fileName,'.'));
  					
      			// Check if the actual file is a jpeg image
      			if (($extName == '.jpg') || ($extName == '.jpeg')){
		    		$thmbFile = $dirName.'/'.$fileMain.'_th.jpg';
		    		// If a thumbnail dosn't exists then create a new one
		    		if (!file_exists($thmbFile)){
			    		imagejpeg(resizeImage($file,$thmb_width,$thmb_height),$thmbFile,80);
			    	}
				}
      		} 
   		}
   		}
}

}

function getNormalImage($file){
$base = substr($file,0,strrpos($file,'_th.jpg'));
if (file_exists($base.'.jpg')) return $base.'.jpg';
elseif (file_exists($base.'.jpeg')) return $base.'.jpeg';
else return "";
}

function displayPhotos(){
global $columns;

generateThumbnails();
$act = 0;
// Open the actual directory
if ($handle = opendir(".")) {
	// Read all file from the actual directory
	while ($file = readdir($handle))  {
		// Check whether tha actual item is a valid file
		if (is_file($file)){
			// Check whether the actual image is a thumbnail
      		if (strpos($file,'_th.jpg')){
				++$act;
				if ($act > $columns) {
					echo '</tr><tr><td class="photo"><a href="'.getNormalImage($file).'"><img src="'.$file.'" alt="'.$file.'"/></a></td>';	
					$act = 1;
				} else {
					echo '<td class="photo"><a href="'.getNormalImage($file).'"><img src="'.$file.'" alt="'.$file.'"/></a></td>';	
				}
      			
      		}
      	}
	}
}	
}

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.