Click here to Skip to main content
15,904,416 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi guys and gals,
I want to add a transparency function to my image.php so I can upload transparency images I am using GD Thumbnail.

but dont know how to do it not so good in php

here is my Thumbnail.php

PHP
<?php
/**
* thumbnail.php
*
* @author         Ian Selby (ian@gen-x-design.com)
* @copyright     Copyright 2006
* @version     1.1 (PHP4)
*
*/

/**
* PHP class for dynamically resizing, cropping, and rotating images for thumbnail purposes and either displaying them on-the-fly or saving them.
*
*/
class Thumbnail {
    /**
     * Error message to display, if any
     *
     * @var string
     */
    var $errmsg;
    /**
     * Whether or not there is an error
     *
     * @var boolean
     */
    var $error;
    /**
     * Format of the image file
     *
     * @var string
     */
    var $format;
    /**
     * File name and path of the image file
     *
     * @var string
     */
    var $fileName;
    /**
     * Image meta data if any is available (jpeg/tiff) via the exif library
     *
     * @var array
     */
    var $imageMeta;
    /**
     * Current dimensions of working image
     *
     * @var array
     */
    var $currentDimensions;
    /**
     * New dimensions of working image
     *
     * @var array
     */
    var $newDimensions;
    /**
     * Image resource for newly manipulated image
     *
     * @var resource
     * @access private
     */
    var $newImage;
    /**
     * Image resource for image before previous manipulation
     *
     * @var resource
     * @access private
     */
    var $oldImage;
    /**
     * Image resource for image being currently manipulated
     *
     * @var resource
     * @access private
     */
    var $workingImage;
    /**
     * Percentage to resize image by
     *
     * @var int
     * @access private
     */
    var $percent;
    /**
     * Maximum width of image during resize
     *
     * @var int
     * @access private
     */
    var $maxWidth;
    /**
     * Maximum height of image during resize
     *
     * @var int
     * @access private
     */
    var $maxHeight;

    /**
     * Class constructor
     *
     * @param string $fileName
     * @return Thumbnail
     */
    function Thumbnail($fileName) {
        //make sure the GD library is installed
        if(!function_exists("gd_info")) {
            echo 'You do not have the GD Library installed.  This class requires the GD library to function properly.' . "\n";
            echo 'visit http://us2.php.net/manual/en/ref.image.php for more information';
            exit;
        }
        //initialize variables
        $this->errmsg               = '';
        $this->error                = false;
        $this->currentDimensions    = array();
        $this->newDimensions        = array();
        $this->fileName             = $fileName;
        $this->imageMeta            = array();
        $this->percent              = 100;
        $this->maxWidth             = 0;
        $this->maxHeight            = 0;

        //check to see if file exists
        if(!file_exists($this->fileName)) {
            $this->errmsg = 'File not found';
            $this->error = true;
        }
        //check to see if file is readable
        elseif(!is_readable($this->fileName)) {
            $this->errmsg = 'File is not readable';
            $this->error = true;
        }

        //if there are no errors, determine the file format
        if($this->error == false) {
            //check if gif
            if(stristr(strtolower($this->fileName),'.gif')) $this->format = 'GIF';
            //check if jpg
            elseif(stristr(strtolower($this->fileName),'.jpg') || stristr(strtolower($this->fileName),'.jpeg')) $this->format = 'JPG';
            //check if png
            elseif(stristr(strtolower($this->fileName),'.png')) $this->format = 'PNG';
            //unknown file format
            else {
                $this->errmsg = 'Unknown file format';
                $this->error = true;
            }
        }

        //initialize resources if no errors
        if($this->error == false) {
            switch($this->format) {
                case 'GIF':
                    $this->oldImage = ImageCreateFromGif($this->fileName);
                    break;
                case 'JPG':
                    $this->oldImage = ImageCreateFromJpeg($this->fileName);
                    break;
                case 'PNG':
                    $this->oldImage = ImageCreateFromPng($this->fileName);
                    break;
            }

            $size = GetImageSize($this->fileName);
            $this->currentDimensions = array('width'=>$size[0],'height'=>$size[1]);
            $this->newImage = $this->oldImage;
            $this->gatherImageMeta();
        }

        if($this->error == true) {
            $this->showErrorImage();
            break;
        }
    }

    /**
     * Must be called to free up allocated memory after all manipulations are done
     *
     */
    function destruct() {
        if(is_resource($this->newImage)) @ImageDestroy($this->newImage);
        if(is_resource($this->oldImage)) @ImageDestroy($this->oldImage);
        if(is_resource($this->workingImage)) @ImageDestroy($this->workingImage);
    }

    /**
     * Returns the current width of the image
     *
     * @return int
     */
    function getCurrentWidth() {
        return $this->currentDimensions['width'];
    }

    /**
     * Returns the current height of the image
     *
     * @return int
     */
    function getCurrentHeight() {
        return $this->currentDimensions['height'];
    }

    /**
     * Calculates new image width
     *
     * @param int $width
     * @param int $height
     * @return array
     */
    function calcWidth($width,$height) {
        $newWp = (100 * $this->maxWidth) / $width;
        $newHeight = ($height * $newWp) / 100;
        return array('newWidth'=>intval($this->maxWidth),'newHeight'=>intval($newHeight));
    }

    /**
     * Calculates new image height
     *
     * @param int $width
     * @param int $height
     * @return array
     */
    function calcHeight($width,$height) {
        $newHp = (100 * $this->maxHeight) / $height;
        $newWidth = ($width * $newHp) / 100;
        return array('newWidth'=>intval($newWidth),'newHeight'=>intval($this->maxHeight));
    }

    /**
     * Calculates new image size based on percentage
     *
     * @param int $width
     * @param int $height
     * @return array
     */
    function calcPercent($width,$height) {
        $newWidth = ($width * $this->percent) / 100;
        $newHeight = ($height * $this->percent) / 100;
        return array('newWidth'=>intval($newWidth),'newHeight'=>intval($newHeight));
    }

    /**
     * Calculates new image size based on width and height, while constraining to maxWidth and maxHeight
     *
     * @param int $width
     * @param int $height
     */
    function calcImageSize($width,$height) {
        $newSize = array('newWidth'=>$width,'newHeight'=>$height);

        if($this->maxWidth > 0) {

            $newSize = $this->calcWidth($width,$height);

            if($this->maxHeight > 0 && $newSize['newHeight'] > $this->maxHeight) {
                $newSize = $this->calcHeight($newSize['newWidth'],$newSize['newHeight']);
            }

            //$this->newDimensions = $newSize;
        }

        if($this->maxHeight > 0) {
            $newSize = $this->calcHeight($width,$height);

            if($this->maxWidth > 0 && $newSize['newWidth'] > $this->maxWidth) {
                $newSize = $this->calcWidth($newSize['newWidth'],$newSize['newHeight']);
            }

            //$this->newDimensions = $newSize;
        }

        $this->newDimensions = $newSize;
    }

    /**
     * Calculates new image size based percentage
     *
     * @param int $width
     * @param int $height
     */
    function calcImageSizePercent($width,$height) {
        if($this->percent > 0) {
            $this->newDimensions = $this->calcPercent($width,$height);
        }
    }

    /**
     * Displays error image
     *
     */
    function showErrorImage() {
        header('Content-type: image/png');
        $errImg = ImageCreate(220,25);
        $bgColor = imagecolorallocate($errImg,0,0,0);
        $fgColor1 = imagecolorallocate($errImg,255,255,255);
        $fgColor2 = imagecolorallocate($errImg,255,0,0);
        imagestring($errImg,3,6,6,'Error:',$fgColor2);
        imagestring($errImg,3,55,6,$this->errmsg,$fgColor1);
        imagepng($errImg);
        imagedestroy($errImg);
    }

    /**
     * Resizes image to maxWidth x maxHeight
     *
     * @param int $maxWidth
     * @param int $maxHeight
     */
    function resize($maxWidth = 0, $maxHeight = 0) {
        $this->maxWidth = $maxWidth;
        $this->maxHeight = $maxHeight;

        $this->calcImageSize($this->currentDimensions['width'],$this->currentDimensions['height']);

        if(function_exists("ImageCreateTrueColor")) {
            $this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
        }
        else {
            $this->workingImage = ImageCreate($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
        }

        ImageCopyResampled(
            $this->workingImage,
            $this->oldImage,
            0,
            0,
            0,
            0,
            $this->newDimensions['newWidth'],
            $this->newDimensions['newHeight'],
            $this->currentDimensions['width'],
            $this->currentDimensions['height']
        );

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $this->newDimensions['newWidth'];
        $this->currentDimensions['height'] = $this->newDimensions['newHeight'];
    }

    /**
     * manuel_resize image to maxWidth x maxHeight
     *
     * @param int $maxWidth
     * @param int $maxHeight
     */
    function manual_resize($maxWidth = 0, $maxHeight = 0) {
        $this->maxWidth = $maxWidth;
        $this->maxHeight = $maxHeight;

        $this->calcImageSize($this->currentDimensions['width'],$this->currentDimensions['height']);

        if(function_exists("ImageCreateTrueColor")) {
            $this->workingImage = ImageCreateTrueColor($this->maxWidth,$this->maxHeight);
        }
        else {
            $this->workingImage = ImageCreate($this->maxWidth,$this->maxHeight);
        }

        ImageCopyResampled(
            $this->workingImage,
            $this->oldImage,
            0,
            0,
            0,
            0,
            $this->maxWidth,
            $this->maxHeight,
            $this->currentDimensions['width'],
            $this->currentDimensions['height']
        );

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $this->newWidth;
        $this->currentDimensions['height'] = $this->maxHeight;
    }
  
    /**
     * Resizes the image by $percent percent
     *
     * @param int $percent
     */
    function resizePercent($percent = 0) {
        $this->percent = $percent;

        $this->calcImageSizePercent($this->currentDimensions['width'],$this->currentDimensions['height']);

        if(function_exists("ImageCreateTrueColor")) {
            $this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
        }
        else {
            $this->workingImage = ImageCreate($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
        }

        ImageCopyResampled(
            $this->workingImage,
            $this->oldImage,
            0,
            0,
            0,
            0,
            $this->newDimensions['newWidth'],
            $this->newDimensions['newHeight'],
            $this->currentDimensions['width'],
            $this->currentDimensions['height']
        );

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $this->newDimensions['newWidth'];
        $this->currentDimensions['height'] = $this->newDimensions['newHeight'];
    }

    /**
     * Crops the image from calculated center in a square of $cropSize pixels
     *
     * @param int $cropSize
     */
    function cropFromCenter($cropSize) {
        if($cropSize > $this->currentDimensions['width']) $cropSize = $this->currentDimensions['width'];
        if($cropSize > $this->currentDimensions['height']) $cropSize = $this->currentDimensions['height'];

        $cropX = intval(($this->currentDimensions['width'] - $cropSize) / 2);
        $cropY = intval(($this->currentDimensions['height'] - $cropSize) / 2);

        if(function_exists("ImageCreateTrueColor")) {
            $this->workingImage = ImageCreateTrueColor($cropSize,$cropSize);
        }
        else {
            $this->workingImage = ImageCreate($cropSize,$cropSize);
        }

        imagecopyresampled(
            $this->workingImage,
            $this->oldImage,
            0,
            0,
            $cropX,
            $cropY,
            $cropSize,
            $cropSize,
            $cropSize,
            $cropSize
        );

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $cropSize;
        $this->currentDimensions['height'] = $cropSize;
    }

    /**
     * Advanced cropping function that crops an image using $startX and $startY as the upper-left hand corner.
     *
     * @param int $startX
     * @param int $startY
     * @param int $width
     * @param int $height
     */
    function crop($startX,$startY,$width,$height) {
        //make sure the cropped area is not greater than the size of the image
        if($width > $this->currentDimensions['width']) $width = $this->currentDimensions['width'];
        if($height > $this->currentDimensions['height']) $height = $this->currentDimensions['height'];
        //make sure not starting outside the image
        if(($startX + $width) > $this->currentDimensions['width']) $startX = ($this->currentDimensions['width'] - $width);
        if(($startY + $height) > $this->currentDimensions['height']) $startY = ($this->currentDimensions['height'] - $height);
        if($startX < 0) $startX = 0;
        if($startY < 0) $startY = 0;

        if(function_exists("ImageCreateTrueColor")) {
            $this->workingImage = ImageCreateTrueColor($width,$height);
        }
        else {
            $this->workingImage = ImageCreate($width,$height);
        }

        imagecopyresampled(
            $this->workingImage,
            $this->oldImage,
            0,
            0,
            $startX,
            $startY,
            $width,
            $height,
            $width,
            $height
        );

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $width;
        $this->currentDimensions['height'] = $height;
    }

    /**
     * Outputs the image to the screen, or saves to $name if supplied.  Quality of JPEG images can be controlled with the $quality variable
     *
     * @param int $quality
     * @param string $name
     */
    function show($quality=100,$name = '') {
        switch($this->format) {
            case 'GIF':
                if($name != '') {
                    ImageGif($this->newImage,$name);
                }
                else {
                   header('Content-type: image/gif');
                   ImageGif($this->newImage);
                }
                break;
            case 'JPG':
                if($name != '') {
                    ImageJpeg($this->newImage,$name,$quality);
                }
                else {
                   header('Content-type: image/jpeg');
                   ImageJpeg($this->newImage,'',$quality);
                }
                break;
            case 'PNG':
                if($name != '') {
                    ImagePng($this->newImage,$name);
                }
                else {
                   header('Content-type: image/png');
                   ImagePng($this->newImage);
                }
                break;
        }
    }

    /**
     * Saves image as $name (can include file path), with quality of # percent if file is a jpeg
     *
     * @param string $name
     * @param int $quality
     */
    function save($name,$quality=100) {
        $this->show($quality,$name);
    }

    /**
     * Creates Apple-style reflection under image, optionally adding a border to main image
     *
     * @param int $percent
     * @param int $reflection
     * @param int $white
     * @param bool $border
     * @param string $borderColor
     */
    function createReflection($percent,$reflection,$white,$border = true,$borderColor = '#a4a4a4') {
        $width = $this->currentDimensions['width'];
        $height = $this->currentDimensions['height'];

        $reflectionHeight = intval($height * ($reflection / 100));
        $newHeight = $height + $reflectionHeight;
        $reflectedPart = $height * ($percent / 100);

        $this->workingImage = ImageCreateTrueColor($width,$newHeight);

        ImageAlphaBlending($this->workingImage,true);

        $colorToPaint = ImageColorAllocateAlpha($this->workingImage,255,255,255,0);
        ImageFilledRectangle($this->workingImage,0,0,$width,$newHeight,$colorToPaint);

        imagecopyresampled(
                            $this->workingImage,
                            $this->newImage,
                            0,
                            0,
                            0,
                            $reflectedPart,
                            $width,
                            $reflectionHeight,
                            $width,
                            ($height - $reflectedPart));
        $this->imageFlipVertical();

        imagecopy($this->workingImage,$this->newImage,0,0,0,0,$width,$height);

        imagealphablending($this->workingImage,true);

        for($i=0;$i<$reflectionHeight;$i++) {
            $colorToPaint = imagecolorallocatealpha($this->workingImage,255,255,255,($i/$reflectionHeight*-1+1)*$white);
            imagefilledrectangle($this->workingImage,0,$height+$i,$width,$height+$i,$colorToPaint);
        }

        if($border == true) {
            $rgb = $this->hex2rgb($borderColor,false);
            $colorToPaint = imagecolorallocate($this->workingImage,$rgb[0],$rgb[1],$rgb[2]);
            imageline($this->workingImage,0,0,$width,0,$colorToPaint); //top line
            imageline($this->workingImage,0,$height,$width,$height,$colorToPaint); //bottom line
            imageline($this->workingImage,0,0,0,$height,$colorToPaint); //left line
            imageline($this->workingImage,$width-1,0,$width-1,$height,$colorToPaint); //right line
        }

        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $width;
        $this->currentDimensions['height'] = $newHeight;
    }

    /**
     * Inverts working image, used by reflection function
     *
     * @access    private
     */
    function imageFlipVertical() {
        $x_i = imagesx($this->workingImage);
        $y_i = imagesy($this->workingImage);

        for($x = 0; $x < $x_i; $x++) {
            for($y = 0; $y < $y_i; $y++) {
                imagecopy($this->workingImage,$this->workingImage,$x,$y_i - $y - 1, $x, $y, 1, 1);
            }
        }
    }

    /**
     * Converts hexidecimal color value to rgb values and returns as array/string
     *
     * @param string $hex
     * @param bool $asString
     * @return array|string
     */
    function hex2rgb($hex, $asString = false) {
        // strip off any leading #
        if (0 === strpos($hex, '#')) {
           $hex = substr($hex, 1);
        } else if (0 === strpos($hex, '&H')) {
           $hex = substr($hex, 2);
        }

        // break into hex 3-tuple
        $cutpoint = ceil(strlen($hex) / 2)-1;
        $rgb = explode(':', wordwrap($hex, $cutpoint, ':', $cutpoint), 3);

        // convert each tuple to decimal
        $rgb[0] = (isset($rgb[0]) ? hexdec($rgb[0]) : 0);
        $rgb[1] = (isset($rgb[1]) ? hexdec($rgb[1]) : 0);
        $rgb[2] = (isset($rgb[2]) ? hexdec($rgb[2]) : 0);

        return ($asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb);
    }
  
    /**
     * Reads selected exif meta data from jpg images and populates $this->imageMeta with appropriate values if found
     *
     */
    function gatherImageMeta() {
        //only attempt to retrieve info if exif exists
        if(function_exists("exif_read_data") && $this->format == 'JPG') {
            $imageData = exif_read_data($this->fileName);
            if(isset($imageData['Make']))
                $this->imageMeta['make'] = ucwords(strtolower($imageData['Make']));
            if(isset($imageData['Model']))
                $this->imageMeta['model'] = $imageData['Model'];
            if(isset($imageData['COMPUTED']['ApertureFNumber'])) {
                $this->imageMeta['aperture'] = $imageData['COMPUTED']['ApertureFNumber'];
                $this->imageMeta['aperture'] = str_replace('/','',$this->imageMeta['aperture']);
            }
            if(isset($imageData['ExposureTime'])) {
                $exposure = explode('/',$imageData['ExposureTime']);
                $exposure = round($exposure[1]/$exposure[0],-1);
                $this->imageMeta['exposure'] = '1/' . $exposure . ' second';
            }
            if(isset($imageData['Flash'])) {
                if($imageData['Flash'] > 0) {
                    $this->imageMeta['flash'] = 'Yes';
                }
                else {
                    $this->imageMeta['flash'] = 'No';
                }
            }
            if(isset($imageData['FocalLength'])) {
                $focus = explode('/',$imageData['FocalLength']);
                $this->imageMeta['focalLength'] = round($focus[0]/$focus[1],2) . ' mm';
            }
            if(isset($imageData['DateTime'])) {
                $date = $imageData['DateTime'];
                $date = explode(' ',$date);
                $date = str_replace(':','-',$date[0]) . ' ' . $date[1];
                $this->imageMeta['dateTaken'] = date('m/d/Y g:i A',strtotime($date));
            }
        }
    }
  
    /**
     * Rotates image either 90 degrees clockwise or counter-clockwise
     *
     * @param string $direction
     */
    function rotateImage($direction = 'CW') {
        if($direction == 'CW') {
            $this->workingImage = imagerotate($this->workingImage,-90,0);
        }
        else {
            $this->workingImage = imagerotate($this->workingImage,90,0);
        }
        $newWidth = $this->currentDimensions['height'];
        $newHeight = $this->currentDimensions['width'];
        $this->oldImage = $this->workingImage;
        $this->newImage = $this->workingImage;
        $this->currentDimensions['width'] = $newWidth;
        $this->currentDimensions['height'] = $newHeight;
    }
}
?>


and here is my image.php


PHP
<?php

    $modul_no = "0";

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
    //~~~~~~~~~~~~~ İncler Yapılıyor ~~~~~~~~~//
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  
    ob_start();
      
    include "login_check.php";
    include "../class/thumbnail.php";


$do     = trim($_REQUEST['do']);
$q         = trim($_REQUEST['q']);
$type     = trim($_REQUEST['type']);
$field  = trim($_REQUEST['field']);

if(!$field){
$field = "image";
}

// image path
$dir = $settings['root_path']."/images/".$type;

// image url
$view_url = $settings['site_url']."/images/".$type."/";

// allowed images types
$allow_types = $settings['image_type'];

// image size KB
$image_size        = $settings['image_size'];

// getting image types
function get_ext($key) {
    $key=strtolower(substr(strrchr($key, "."), 1));
    $key=str_replace("jpeg","jpg",$key);
    return $key;
}

$ext_count=count($allow_types);
$i=0;
foreach($allow_types as $extension) {
  
    if($i <= $ext_count-2){
        $types .="*.".$extension.", ";
    }else{
        $types .="*.".$extension;
    }
    $i++;
}
unset($i,$ext_count); // why not


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Resim Yönetimi</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
<link rel="stylesheet" href="images/style.css" type="text/css" />
<style>
BODY{
margin:1px;
background:#BCCED9;
}
.style1 {color: #FFFFFF}
.style2 {color: #000000}
</style>
<?php
    if($type == "other"){
?>
<script language="javascript">
    function imageAdd(_width, _height, image, filepath)
        {
            window.opener.document.getElementById('f_url').value = filepath;
            window.close();
        }
</script>
<?php
}else{
?>
<script language="javascript">
    function imageAdd(_width, _height, image, filepath)
        {
            window.opener.document.addForm.image.value = image;
            window.close();
        }
</script>
<?php
}
?>

</head>

<body>
<table width="100%" border="0" cellspacing="1" cellpadding="0" class="table_box" >
  <?php

  if($_POST['upload']){
  echo "<tr>\n";
  echo " <td colspan=\"2\" align=\"center\" class=\"style1 listEven row5px\" style=\"height:15px; background:url(images/popup-head.png)\" >";
  echo "Resim Yükleme</td>\n";
  echo " </tr>\n";
  echo "<tr>\n";
  echo "  <td class=\"row5px listEven\" align=\"center\">\n";
            
        $ext=get_ext($_FILES['file']['name']);
        $size=$_FILES['file']['size'];
        $image_size_byte=$image_size*1024;
      
          
            if(!in_array($ext, $allow_types)) {
                          
            echo "Bu Dosya uzantısını yükleyemezsiniz : ".$_FILES['file']['name'].", sadece ".$types."
            uzantılı dosyaları yükleyebilirsiniz.<br />Resim yüklenemedi <br /><br><a href=\"javascript:history.go(-1)\">Geri</a>";
            exit;
                  
            }elseif($size > $image_size_byte) {
              
            echo "Yüklenecek resim: ".$_FILES['file']['name']." boyutu çok büyük.Max resim boyutu
            ".$settings['image_file_size']." KB.<br />Resim yüklenemedi<br /><br><a href=\"javascript:history.go(-1)\">Geri</a>";
            exit;  
            }else{
          
            $ext=get_ext($_FILES['file']['name']);
          
            $query = $db->read_query("select newname from images where type='$type' ORDER BY image_id DESC LIMIT 1") or die($db->sql_error());
            $row = $db->sql_fetcharray($query);
            $last_img = explode(".",$row[newname]);
            $new_image_name = ($last_img[0]+1).".".$ext;
                          


            if(@move_uploaded_file($_FILES['file']['tmp_name'],$dir."/".$new_image_name)) {
              
                $db->write_query("insert into images
                        (
                        oldname, newname, type, size
                        )
                        values
                        (
                        '".$_FILES['file']['name']."',
                        '".$new_image_name."',
                        '".$type."',
                        '".$size."'
                        )
                        ");

                $thumb = new Thumbnail($dir."/".$new_image_name);

                if($type == "news"){ // if news image
              
                $thumb->manual_resize($settings['news_image_width'],$settings['news_image_height']);
                $thumb->save($dir."/".$new_image_name,100);
              
                }elseif($type == "authors"){ // if author image
              
                $thumb->manual_resize($settings['authors_big_width'],$settings['authors_big_height']);
                $thumb->save($dir."/".$new_image_name,100);
              
                $thumb_small = new Thumbnail($dir."/".$new_image_name);
              
                $thumb_small->manual_resize($settings['authors_small_width'],$settings['authors_small_height']);
                $thumb_small->save($dir."/th_".$new_image_name,100);
              
                }else{
              
                $image_pix = @getimagesize($dir."/".$new_image_name);
                $width_org = $image_pix[0];
              
                    if($width_org > $settings['page_image_max_width']){
                  
                    $thumb->resize($settings['page_image_max_width']);
                    $thumb->save($dir."/".$new_image_name,100);
                  
                    }
              
              
                } // image type control end
                              
                @chmod($dir."/".$new_image_name,0644);
          
            }else{
          
            echo "Resim Yüklenemedi.Lütfen Sonra Tekrar Deneyiniz.";
            exit;
          
            } // Upload end
      
      
        echo "<input type=\"hidden\" name=urlImage_".$new_imagename." id=urlImage_".$new_imagename." value=\"".$view_url.$new_image_name."\">\n";
        $image_file_size=number_format($_FILES['file']['size']/1024, 1, ".", "");  
        echo "<img src=\"".$view_url.$new_image_name."\" border=\"0\" id=img_upload><br>
        <a href=\"javascript:;\" onclick=\"javascript:imageAdd(document.all.img_upload.width, document.all.img_upload.height, '".$new_image_name."', '".$view_url.$new_image_name."'); window.close();\">Resmi Kullan [ Resim Adı : ".$_FILES['file']['name']." ] [ $image_file_size KB ]</a> [ <a href=\"".$_SERVER['PHP_SELF']."?do=delete&image_id=".$db->sql_nextid()."\">Sil</a> ] <p>\n";
        }

  echo "<input name=\"back\" type=\"button\" onclick=\"javascript:history.go(-1);\" class=\"button\" id=\"back\" value=\"Geri Dön\" />";
  echo "<input name=\"close\" type=\"button\" onclick=\"javascript:window.close()\" class=\"button\" id=\"close\" value=\"Vazgeç\" />";
  echo "  </td>\n";
  echo "</tr>\n";

}elseif($_POST['search_post']){

  echo "<tr>\n";
  echo " <td colspan=\"2\" align=\"center\" class=\"style1 listEven row5px\" style=\"height:15px; background:url(images/popup-head.png)\" >";
  echo "Arama Sonuçları</td>\n";
  echo " </tr>\n";
  echo "<tr>\n";
  echo "  <td class=\"row5px listEven\" align=\"center\">\n";

  if(!$q){
     echo "Lütfen Formu Doldurun..<br /><br><a href=\"javascript:history.go(-1)\">Geri</a>";
    exit;
  }elseif(strlen($q)<3){
     echo "En Az 3 Karakter Girmelisiniz..<br /><br><a href=\"javascript:history.go(-1)\">Geri</a>";
    exit;
  }else{
  
      $query = $db->read_query("select image_id, newname, oldname, size from images where type='$type' and oldname LIKE '%$q%'") or die($db->sql_error());
      $i=0;
    while($row = $db->sql_fetcharray($query)){
    $i++;

    $image_file_size=number_format($row[size]/1024, 1, ".", "");  
    $img_url = $view_url.$row[newname];
    echo "<input type=\"hidden\" name=urlImage_".$row[newname]." id=urlImage_".$row[newname]." value=\"".$img_url."\">\n";
    echo "<img src=\"".$img_url."\" border=\"0\" id=img_upload><br>";
    echo "<a href=\"javascript:;\"
    onclick=\"javascript:imageAdd(document.all.img_upload.width, document.all.img_upload.height, '".$row[newname]."', '".$img_url."'); window.close();\">Resmi Kullan [ Resim Adı : ".$row[oldname]." ] [ $image_file_size KB ]</a> [ <a href=\"".$_SERVER['PHP_SELF']."?do=delete&image_id=".$row[image_id]."\">Sil</a> ] <p>\n";
    }
  
    if(!$i){
    echo "Kayıt Bulunamadı..<br /><br><a href=\"javascript:history.go(-1)\">Geri</a>";
    exit;
    }
  }

  echo "<input name=\"back\" type=\"button\" onclick=\"javascript:history.go(-1);\" class=\"button\" id=\"back\" value=\"Geri Dön\" />";
  echo "<input name=\"close\" type=\"button\" onclick=\"javascript:window.close()\" class=\"button\" id=\"close\" value=\"Vazgeç\" />";
  echo "  </td>\n";
  echo "</tr>\n";

}elseif($do == "delete"){
  
    $image_id = intval($_GET['image_id']);
    $query = $db->read_query("select type, newname from images where image_id=$image_id") or die($db->sql_error());
    $row = $db->sql_fetcharray($query);
  
    if(file_exists($settings['root_path']."/images/".$row[type]."/".$row[newname])){
    @unlink($settings['root_path']."/images/".$row[type]."/".$row[newname]);
    }
    $query = $db->write_query("delete from images where image_id=$image_id") or die($db->sql_error());
    echo "<script>alert('Resim Silindi.'); window.location = 'image.php?do=upload&type=".$row[type]."';</script>";

}elseif($do == "search"){
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<input type="hidden" value="<?=$type?>" name="type" />
<input type="hidden" value="<?=$do?>" name="do" />
<input type="hidden" value="<?=$rte?>" name="rte" />
  <tr>
    <td colspan="2" align="center"  class="style1 listEven row5px" style="height:15px; background:url(images/popup-head.png)" >Arama Yapmak İstediğiniz Kriterleri Giriniz</td>
  </tr>

  <tr>
    <td width="30%" class="row5px listEven">Kelime Girin   :</td>
    <td width="70%" class="row5px listOdd"><input name="q" type="text" size="50" />
    En az 3 Karakter </td>
  </tr>
   <tr>
    <td width="30%" class="row5px listEven" align="center"> </td>
    <td width="70%" class="row5px listOdd"><input name="search_post" type="submit" class="button" id="search_post" value="Ara" />
      <input name="close23" type="button" onclick="javascript:window.close()" class="button" id="close23" value="Vazgeç" />
      <input name="uploadimg" type="button" onclick="javascript:window.location='<?=$_SERVER['PHP_SELF']?>?do=upload&rte=<?=$rte?>&type=<?=$type?>'" class="button" id="uploadimg" value="Resim Yükle" /></td>
  </tr>
  </form>
<?php
}else{ // Upload Formu
  ?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<input type="hidden" value="<?=$type?>" name="type" />
<input type="hidden" value="<?=$do?>" name="do" />
<input type="hidden" value="<?=$rte?>" name="rte" />
  <tr>
    <td colspan="2" align="center"  class="style1 listEven row5px" style="height:15px; background:url(images/popup-head.png)" >Yüklenecek Resmi Seçiniz</td>
  </tr>
<tr>
    <td colspan="2" align="left" class="row5px listEven style2" style="height:15px; line-height:140%; background: #A5BBC8" >Yüklemek İstediğiniz Resmi " GÖZAT " butonuna basarak seçiniz ve Yükle butonuna Basınız. <br />Sadece <?=$types?> uzantılı resimleri yükleyebilirsiniz.</td>
  </tr>
  <tr>
    <td width="30%" class="row5px listEven">Resim Seçin  :</td>
    <td width="70%" class="row5px listOdd"><input name="file" type="file" size="50" /></td>
  </tr>
   <tr>
    <td width="30%" class="row5px listEven" align="center"> </td>
    <td width="70%" class="row5px listOdd"><input name="upload" type="submit" class="button" id="upload" value="Yükle" />
      <input name="close222" type="button" onclick="javascript:window.close()" class="button" id="close222" value="Vazgeç" />
      <input name="imgsearch" type="button" onclick="javascript:window.location='<?=$_SERVER['PHP_SELF']?>?do=search&rte=<?=$rte?>&type=<?=$type?>'" class="button" id="imgsearch" value="Resim Ara" /></td>
  </tr>
  </form>
  <?php
  }
  ?>
</table>

</body>
</html>


What I have tried:

I have this function but dont know how to handle it in image.php
function IsTransparentPng($File){
    //32-bit pngs
    //4 checks for greyscale + alpha and RGB + alpha
    if ((ord(file_get_contents($File, false, null, 25, 1)) & 4)>0){
        return true;
    }
    //8 bit pngs
    $fd=fopen($File, 'r');
    $continue=true;
    $plte=false;
    $trns=false;
    $idat=false;
    while($continue===true){
        $continue=false;
        $line=fread($fd, 1024);
        if ($plte===false){
            $plte=(stripos($line, 'PLTE')!==false);
        }
        if ($trns===false){
            $trns=(stripos($line, 'tRNS')!==false);
        }
        if ($idat===false){
            $idat=(stripos($line, 'IDAT')!==false);
        }
        if ($idat===false and !($plte===true and $trns===true)){
            $continue=true;
        }
    }
    fclose($fd);
    return ($plte===true and $trns===true);
}
Posted
Updated 22-May-17 7:22am
v4

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900