Ignore:
Timestamp:
01/20/08 23:13:25 (12 years ago)
Author:
ray
Message:

#1132 [ExtendedFileManager?] new Version

Location:
trunk/plugins/ImageManager
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/ImageManager/Classes/GD.php

    r709 r937  
    8383        $this->_get_image_details($image); 
    8484        $functionName = 'ImageCreateFrom' . $this->type; 
     85                 
    8586                if(function_exists($functionName)) 
    8687                { 
    8788                        $this->imageHandle = $functionName($this->image); 
     89                        if ( $this->type == 'png') 
     90                        { 
     91                                imageAlphaBlending($this->imageHandle, false); 
     92                                imageSaveAlpha($this->imageHandle, true); 
     93                        } 
    8894                } 
    8995    } // End load 
     
    158164    { 
    159165        if(function_exists('imagerotate')) { 
    160             $white = imagecolorallocate ($this->imageHandle, 255, 255, 255); 
     166            $white = imagecolorallocatealpha ($this->imageHandle, 255, 255, 255, 127); 
    161167                        $this->imageHandle = imagerotate($this->imageHandle, $angle, $white); 
    162168            return true; 
     
    165171        if ( $options==null ){ 
    166172            $autoresize = true; 
    167             $color_mask = array(255,255,0); 
     173            $color_mask = array(105,255,255); 
    168174        } else { 
    169175            extract( $options ); 
     
    240246        } 
    241247 
    242         $img2   = @imagecreate($width2,$height2); 
     248        $img2   = @$this->newImgPreserveAlpha( imagecreateTrueColor($width2,$height2) ); 
    243249 
    244250        if ( !is_resource($img2) ){ 
     
    253259        imagepalettecopy($img2,$img); 
    254260 
    255         $mask   = imagecolorresolve($img2,$color_mask[0],$color_mask[1],$color_mask[2]); 
    256  
     261       $mask = imagecolorallocatealpha ($img2,$color_mask[0],$color_mask[1],$color_mask[2],127); 
    257262        // use simple lines copy for axes angles 
    258263        switch((int)($angle)){ 
     
    344349        } 
    345350        if(function_exists('ImageCreateTrueColor')){ 
    346             $new_img =ImageCreateTrueColor($new_x,$new_y); 
     351           $new_img = $this->newImgPreserveAlpha( ImageCreateTrueColor($new_x,$new_y) ); 
    347352        } else { 
    348353            $new_img =ImageCreate($new_x,$new_y); 
    349354        } 
     355 
    350356        if(function_exists('ImageCopyResampled')){ 
    351357            ImageCopyResampled($new_img, $this->imageHandle, 0, 0, 0, 0, $new_x, $new_y, $this->img_x, $this->img_y); 
     
    353359            ImageCopyResized($new_img, $this->imageHandle, 0, 0, 0, 0, $new_x, $new_y, $this->img_x, $this->img_y); 
    354360        } 
     361 
    355362        $this->old_image = $this->imageHandle; 
    356363        $this->imageHandle = $new_img; 
     
    373380    { 
    374381        if(function_exists('ImageCreateTrueColor')){ 
    375             $new_img =ImageCreateTrueColor($new_width,$new_height); 
     382            $new_img =  $this->newImgPreserveAlpha(ImageCreateTrueColor($new_width,$new_height)); 
    376383        } else { 
    377384            $new_img =ImageCreate($new_width,$new_height); 
     
    434441        ImageGammaCorrect($this->imageHandle, 1.0, $outputgamma); 
    435442    } 
     443        function paletteToTrueColorWithTransparency() 
     444        { 
     445                $oldImg = $this->imageHandle; 
     446                $newImg = $this->newImgPreserveAlpha( imagecreatetruecolor($this->img_x,$this->img_y) ); 
     447                imagecopy($newImg,$oldImg,0,0,0,0,$this->img_x,$this->img_y); 
     448 
     449                $this->imageHandle = $newImg; 
     450        } 
     451         
     452        function newImgPreserveAlpha($newImg) 
     453        { 
     454                if ( $this->type == 'jpeg') return $newImg; 
     455                 
     456                // Turn off transparency blending (temporarily) 
     457                imagealphablending($newImg, false); 
     458                 
     459                // Create a new transparent color for image 
     460                if ( $transparent = imagecolortransparent($this->imageHandle) >= 0 ) 
     461                { 
     462                        if (imageistruecolor($this->imageHandle)) 
     463                        { 
     464                                $red = ($transparent & 0xFF0000) >> 16; 
     465                                $green = ($transparent & 0x00FF00) >> 8; 
     466                                $blue = ($transparent & 0x0000FF); 
     467                                $color_values = array('red' => $red, 'green' => $green, 'blue' => $blue); 
     468                        } 
     469                        else 
     470                        { 
     471                                $color_values = imagecolorsforindex($this->imageHandle,$transparent); 
     472 
     473                        } 
     474                        $color_values = imagecolorsforindex($this->imageHandle,$transparent); 
     475                        $color = imagecolorallocatealpha($newImg, $color_values['red'],$color_values['green'],$color_values['blue'], 127); 
     476                        $colort = imagecolorallocate($newImg, $color_values['red'],$color_values['green'],$color_values['blue']); 
     477                } 
     478                else 
     479                { 
     480                        $color = imagecolorallocatealpha($newImg, 252, 2, 252, 127); 
     481                        $colort = imagecolorallocate($newImg, 252, 2, 252); 
     482                } 
     483                imagecolortransparent($newImg,$colort); 
     484                 
     485                // Completely fill the background of the new image with allocated color. 
     486                imagefill($newImg, 0, 0, $color); 
     487                 
     488                // Restore transparency blending 
     489                imagesavealpha($newImg, true); 
     490                 
     491                return $newImg; 
     492        } 
     493         
     494        function preserveTransparencyForPalette() 
     495        { 
     496                $new_img = imagecreatetruecolor($this->img_x,$this->img_y); 
     497                $truecolor = imageistruecolor($this->imageHandle); 
     498                $transparent = imagecolorallocate($new_img, 252,2,252); // nasty pinkish purple that hopefully doesn't exist in the image 
     499 
     500                imagecolortransparent($new_img, $transparent); 
     501                for ($i=0;$i<$this->img_y;$i++) 
     502                { 
     503                        for ($j=0;$j<$this->img_x;$j++) 
     504                        { 
     505                                $c = imagecolorat($this->imageHandle,$j, $i); 
     506                                if ($truecolor) 
     507                                { 
     508                                        $a = ($c >> 24) & 0xFF; 
     509                                        $r = ($c >> 16) & 0xFF; 
     510                                        $g = ($c >> 8) & 0xFF; 
     511                                        $b = $c & 0xFF; 
     512                                        $color_values = array('red' => $r, 'green' => $g, 'blue' => $b, 'alpha' => $a); 
     513                                } 
     514                                else 
     515                                { 
     516                                        $color_values = imagecolorsforindex($this->imageHandle,$transparent); 
     517                                } 
     518                                if ($color_values['alpha'] >= 126) 
     519                                { 
     520                                        imagesetpixel($new_img, $j, $i, $transparent); 
     521                                } 
     522                                else 
     523                                { 
     524                                        imagesetpixel($new_img, $j, $i, $c); 
     525                                } 
     526                        } 
     527                } 
     528                $this->imageHandle = $new_img; 
     529        } 
    436530 
    437531    /** 
  • trunk/plugins/ImageManager/Classes/IM.php

    r709 r937  
    179179        $this->command['gamma'] = "-gamma $outputgamma"; 
    180180    } 
    181  
     181         
     182        function reduce_colors($number = 256) 
     183        { 
     184                 $this->command['colors'] = "-colors $number"; 
     185        } 
    182186    /** 
    183187     * Save the image file 
     
    214218        if ($type == '') { 
    215219            header('Content-type: image/' . $this->type); 
    216             passthru(IMAGE_TRANSFORM_LIB_PATH . 'convert ' . implode(' ', $this->command) . " -quality $quality "  . escapeshellarg($this->image) . ' ' . strtoupper($this->type) . ":-"); 
     220            passthru(IMAGE_TRANSFORM_LIB_PATH . '  ' . implode(' ', $this->command) . " -quality $quality "  . escapeshellarg($this->image) . ' ' . strtoupper($this->type) . ":-"); 
    217221        } else { 
    218222            header('Content-type: image/' . $type); 
  • trunk/plugins/ImageManager/Classes/ImageEditor.php

    r709 r937  
    9595                        $image['file'] = $relative; 
    9696                        $image['fullpath'] = $fullpath; 
     97                        $image['filesize'] = @filesize($fullpath); 
    9798                } 
    9899 
     
    119120                        $params = $_GET['params']; 
    120121 
    121                 $values =  explode(',',$params,4); 
     122                $values =  explode(',',$params); 
    122123                $saveFile = $this->getSaveFileName($values[0]); 
    123124 
    124125                $img = Image_Transform::factory(IMAGE_CLASS); 
    125126                $img->load($fullpath); 
    126  
     127                if ( is_callable($img,'paletteToTrueColorWithTransparency') && !imageistruecolor( $img->imageHandle)) 
     128                { 
     129                        $img->paletteToTrueColorWithTransparency(); 
     130                } 
    127131                switch ($action)  
    128132                { 
     
    154158                                        //we need to make the relative path once more. 
    155159                                        $newSaveFile = $this->makeRelative($relative, $newSaveFile); 
    156           $image['saveFile'] = $newSaveFile; 
     160                                $image['saveFile'] = $newSaveFile; 
    157161                                        $newSaveFullpath = $this->manager->getFullPath($newSaveFile); 
     162                                        if ( $values[0] == 'gif' && is_callable(array($img, 'preserveTransparencyForPalette'))) 
     163                                        { 
     164                                                $img->preserveTransparencyForPalette(); 
     165                                        } 
    158166                                        $img->save($newSaveFullpath, $values[0], $quality); 
    159167                                        if(is_file($newSaveFullpath)) 
     
    163171                                } 
    164172                                break; 
     173                                case 'preview': 
     174                                        $quality = intval($values[1]); 
     175                                         
     176                                         
     177                                        $image['file'] = $relative; 
     178                                        $image['fullpath'] = $fullpath; 
     179                                         
     180                                        //create the tmp image file 
     181                                        $filename = $this->createUnique($fullpath); 
     182                                        $newRelative = $this->makeRelative($relative, $filename); 
     183                                        $newFullpath = $this->manager->getFullPath($newRelative); 
     184                                        $newURL = $this->manager->getFileURL($newRelative); 
     185                                         
     186                                         
     187                                        if ( $values[0] == 'gif' && is_callable(array($img, 'preserveTransparencyForPalette'))) 
     188                                        { 
     189                                                $img->preserveTransparencyForPalette(); 
     190                                        } 
     191                                        $img->save($newFullpath, $values[0] ); 
     192                                        $img->free(); 
     193                         
     194                                        //get the image information 
     195                                        $imgInfo = @getimagesize($newFullpath); 
     196                                 
     197                                        $image['src'] = $newURL; 
     198                                $image['width'] = $imgInfo[0]; 
     199                                        $image['height'] = $imgInfo[1]; 
     200                                        $image['dimensions'] = $imgInfo[3]; 
     201                                        $image['file'] = $relative; 
     202                                        $image['fullpath'] = $fullpath; 
     203                                        $image['filesize'] = @filesize($newFullpath); 
     204 
     205                                        Return $image; 
     206         
     207                                break; 
    165208                } 
    166209                 
     
    170213                $newFullpath = $this->manager->getFullPath($newRelative); 
    171214                $newURL = $this->manager->getFileURL($newRelative); 
    172                  
     215 
    173216                //save the file. 
    174                 $img->save($newFullpath); 
     217                $img->save($newFullpath, 'png' ); 
    175218                $img->free(); 
    176219 
     
    179222 
    180223                $image['src'] = $newURL; 
    181     $image['width'] = $imgInfo[0]; 
    182     $image['height'] = $imgInfo[1]; 
     224        $image['width'] = $imgInfo[0]; 
     225                $image['height'] = $imgInfo[1]; 
    183226                $image['dimensions'] = $imgInfo[3]; 
    184227                $image['file'] = $newRelative; 
    185228                $image['fullpath'] = $newFullpath; 
    186  
     229                $image['filesize'] = @filesize($newFullpath); 
     230                $image['type'] = image_type_to_mime_type($imgInfo[2]); 
     231                 
    187232                Return $image; 
    188233         
     
    418463 
    419464                $fullpath = $this->manager->getFullPath($relative); 
    420  
     465  
    421466                $type = $this->getImageType($fullpath); 
    422467                if($type != 'gif') 
    423468                        Return 0; 
    424469 
    425                 if(function_exists('ImageCreateFrom'+$type) 
    426                         && function_exists('image'+$type)) 
     470                if(function_exists('ImageCreateFrom'.$type) 
     471                        && function_exists('image'.$type)) 
    427472                        Return 1; 
    428473                else 
  • trunk/plugins/ImageManager/editor.php

    r677 r937  
    2525        <link href="<?php print $IMConfig['base_url'];?>assets/editor.css" rel="stylesheet" type="text/css" />   
    2626<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/slider.js"></script> 
     27<script type="text/javascript" src="../../popups/popup.js"></script> 
    2728<script type="text/javascript" src="<?php print $IMConfig['base_url'];?>assets/popup.js"></script> 
    2829<script type="text/javascript"> 
Note: See TracChangeset for help on using the changeset viewer.