TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
 
 
LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old 08-03-2008, 12:56 AM   #1 (permalink)
The Wanderer
 
Join Date: Jun 2005
Posts: 21
Thanks: 1
Jako is on a distinguished road
Default Looking for transparency help

I have a script I kind of tweaked which would resize my images, jpg, gif, or pngs. The script uploads a copy of the source and then a resized thumbnail.

Only issue is that the thumbnail of a png has a black background and I cant figure out how to keep the original transparency.

PHP Code:
<?php

  
########################################
  # include the getNextFilename function #
  ########################################
  
include('getNextFilename5.php'); // use getNextFilename4.php on a PHP 4 server
  ########################################
  
  // define constants
  
define('THUMBS_DIR''/home/golden/public_html/images/clubs/thumbs/');
  
define('MAX_WIDTH'120);
  
define('MAX_HEIGHT'90);
  
  
// process the uploaded image
  
if (is_uploaded_file($_FILES['image']['tmp_name'])) {
    
$original $_FILES['image']['tmp_name'];
    
// begin by getting the details of the original
    
list($width$height$type) = getimagesize($original);
    
// calculate the scaling ratio
    
if ($width <= MAX_WIDTH && $height <= MAX_HEIGHT) {
      
$ratio 1;
      }
    elseif (
$width $height) {
      
$ratio MAX_WIDTH/$width;
      }
    else {
      
$ratio MAX_HEIGHT/$height;
      }
    
// strip the extension off the image filename
    
$imagetypes = array('/\.gif$/''/\.jpg$/''/\.jpeg$/''/\.png$/');
    
$name preg_replace($imagetypes''basename($_FILES['image']['name']));

    
########################################################
    # getNextFilename() requires the file type as a string #
    # so begin by converting it to a string assigned to $t #
    ########################################################
    
switch($type) {
      case 
1:
        
$t 'gif';
        break;
      case 
2:
        
$t 'jpg';
        break;
      case 
3:
        
$t 'png';
      }
    
################################
    # get new name for upload file #
    ################################
    
$newName getNextFilename5(UPLOAD_DIR$name$t);  // use getNextFilename4() on a PHP 4 server

    ################################################
    # use the new name instead of the existing one #
    ################################################
    // move the temporary file to the upload folder
    
$moved move_uploaded_file($originalUPLOAD_DIR.$newName);
    if (
$moved) {
      
$result "$newName successfully uploaded; ";
      
$original UPLOAD_DIR.$newName;
      }
    else {
      
$result 'Problem uploading '.$_FILES['image']['name'].'; ';
      }
    
################################################

    // create an image resource for the original
    
switch($type) {
      case 
1:
        
$source = @ imagecreatefromgif($original);
        if (!
$source) {
          
$result 'Cannot process GIF files. Please use JPEG or PNG.';
          }
        break;
      case 
2:
        
$source imagecreatefromjpeg($original);
        break;
      case 
3:
        
$source imagecreatefrompng($original);
        break;
      default:
        
$source NULL;
        
$result 'Cannot identify file type.';
      }
    
// make sure the image resource is OK
    
if (!$source) {
      
$result 'Problem copying original';
      }
    else {
      
// calculate the dimensions of the thumbnail
      
$thumb_width round($width $ratio);
      
$thumb_height round($height $ratio);
      
// create an image resource for the thumbnail
      
$thumb imagecreatetruecolor($thumb_width$thumb_height);
      
// create the resized copy
      
imagecopyresampled($thumb$source0000$thumb_width$thumb_height$width$height);
      
// save the resized copy
      
switch($type) {
        case 
1:
          
######################################################
          # use the new name as the basis for the thumb's name #
          ######################################################
          
$name basename($newName'.gif');
          
######################################################
          
if (function_exists('imagegif')) {
            
$success imagegif($thumbTHUMBS_DIR.$name.'_thb.gif');
            
$thumb_name $name.'_thb.gif';
            }
          else {
            
$success imagejpeg($thumbTHUMBS_DIR.$name.'_thb.jpg'50);
            
$thumb_name $name.'_thb.jpg';
            }
          break;
        case 
2:
          
######################################################
          # use the new name as the basis for the thumb's name #
          ######################################################
          
$name basename($newName'.jpg');
          
######################################################
          
$success imagejpeg($thumbTHUMBS_DIR.$name.'_thb.jpg'100);
          
$thumb_name $name.'_thb.jpg';
          break;
        case 
3:
          
######################################################
          # use the new name as the basis for the thumb's name #
          ######################################################
          
$name basename($newName'.png');
          
######################################################
          
$success imagepng($thumbTHUMBS_DIR.$name.'_thb.png');
          
$thumb_name $name.'_thb.png';
        }
        if (
$success) {
          
$result .= "$thumb_name created";
          }
        else {
          
$result .= 'Problem creating thumbnail';
          }
      
// remove the image resources from memory
      
imagedestroy($source);
      
imagedestroy($thumb);
      }
    }
?>
Jako is offline  
Reply With Quote
 



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


All times are GMT. The time now is 10:52 AM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design