Вход Регистрация
Файл: forum/attach_mod/includes/functions_thumbs.php
Строк: 129
<?php
/***************************************************************************
 *                            functions_thumbs.php
 *                            -------------------
 *   begin                : Sat, Jul 27, 2002
 *   copyright            : (C) 2002 Meik Sievertsen
 *   email                : acyd.burn@gmx.de
 *
 *   $Id: functions_thumbs.php,v 1.1.1.1 2005/09/13 05:58:17 eugene Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *
 ***************************************************************************/

//
// All Attachment Functions needed to create Thumbnails
//
if ( !defined('IN_PHPBB') )
{
    die(
'Hacking attempt');
    exit;
}

$imagick '';

//
// Calculate the needed size for Thumbnail
//
function get_img_size_format($width$height)
{

    
// Change these two values to define the Thumbnail Size
    
$max_width 400;
    
$max_height 200;
    
    if (
$width $max_width)
    {
        
$tag_height = ($max_width $width) * $height;
        
$tag_width $max_width;
        
        if (
$tag_height $max_height
        {
            
$tag_width = ($max_height $tag_height) * $tag_width;
            
$tag_height $max_height;
        }
    } 
    else if (
$height $max_height
    {
        
$tag_width = ($max_height $height) * $width;
        
$tag_height $max_height;

        if (
$tag_width $max_width
        {
            
$tag_height = ($max_width $tag_width) * $tag_height;
            
$tag_width $max_width;
        }
    } 
    else 
    {
        
$tag_width $width;
        
$tag_height $height;
    }

    return array(
        
round($tag_width),
        
round($tag_height)
    );
}

//
// Check if imagick is present
//
function is_imagick() 
{
    global 
$imagick$attach_config;

    if (
$attach_config['img_imagick'] != '')
    {
        
$imagick $attach_config['img_imagick'];
        return (
TRUE);
    }
    else
    {
        return (
FALSE);
    }
}

function 
get_supported_image_types()
{
    
$types = array();

    if (
extension_loaded('gd'))
    {
        if (
function_exists('imagegif'))
        {
            
$types[] = '1';
        }
        if (
function_exists('imagejpeg'))
        {
            
$types[] = '2';
        }
        if (
function_exists('imagepng'))
        {
            
$types[] = '3';
        }
    }

    return (
$types);
}

function 
create_thumbnail($source$new_file$mimetype
{
    global 
$attach_config$imagick;

    
$source amod_realpath($source);
    
    
$min_filesize intval($attach_config['img_min_thumb_filesize']);

    
$img_filesize = (@file_exists(@amod_realpath($source))) ? filesize($source) : false;

    if (!
$img_filesize || $img_filesize <= $min_filesize
    {
        return (
FALSE);
    }
    
    
$size image_getdimension($source);

    if ( (
$size[0] == 0) && ($size[1] == 0) )
    {
        return (
FALSE);
    }

    
$new_size get_img_size_format($size[0], $size[1]);

    
$tmp_path '';
    
$old_file '';

    if (
intval($attach_config['allow_ftp_upload']))
    {
        
$old_file $new_file;

        
$tmp_path explode('/'$source);
        
$tmp_path[count($tmp_path)-1] = '';
        
$tmp_path implode('/'$tmp_path);

        if (
$tmp_path == '')
        {
            
$tmp_path '/tmp';
        }

        
$value trim($tmp_path);

        if (
$value[strlen($value)-1] == '/')
        {
            
$value[strlen($value)-1] = ' ';
        }
            
        
$new_file trim($value) . '/t00000';
    }
    
    
$used_imagick FALSE;

    if (
is_imagick()) 
    {
        if (
is_array($size) && count($size) > 0
        {
            
passthru($imagick ' -quality 85 -antialias -sample ' $new_size[0] . 'x' $new_size[1] . ' "' str_replace('\', '/', $source) . '" +profile "*" "' . str_replace('\', '/', $new_file) . '"');
            if (@file_exists(@amod_realpath(
$new_file)))
            {
                
$used_imagick = TRUE;
            }
        }
    } 

    if (!
$used_imagick
    {
        
$type = $size[2];
        
$supported_types = get_supported_image_types();
        
        if (in_array(
$type$supported_types) )
        {
            switch (
$type
            {
                case '1' :
                    
$im = imagecreatefromgif($source);
                    
$new_im = imagecreate($new_size[0]$new_size[1]);
                    imagecopyresized(
$new_im$im, 0, 0, 0, 0, $new_size[0]$new_size[1]$size[0]$size[1]);
                    imagegif(
$new_im$new_file);
                    break;
                case '2' :
                    
$im = imagecreatefromjpeg($source);
                    
$new_im = (intval($attach_config['use_gd2'])) ? @imagecreatetruecolor($new_size[0]$new_size[1]) : imagecreate($new_size[0]$new_size[1]);
                    imagecopyresized(
$new_im$im, 0, 0, 0, 0, $new_size[0]$new_size[1]$size[0]$size[1]);
                    imagejpeg(
$new_im$new_file, 90);
                    break;
                case '3' :
                    
$im = imagecreatefrompng($source);
                    
$new_im = (intval($attach_config['use_gd2'])) ? @imagecreatetruecolor($new_size[0]$new_size[1]) : imagecreate($new_size[0]$new_size[1]);
                    imagecopyresized(
$new_im$im, 0, 0, 0, 0, $new_size[0]$new_size[1]$size[0]$size[1]);
                    imagepng(
$new_im$new_file);
                    break;
            }
        }
    }

    if (!@file_exists(@amod_realpath(
$new_file)))
    {
        return (FALSE);
    }

    if (intval(
$attach_config['allow_ftp_upload']))
    {
        
$result = ftp_file($new_file$old_file$this->type, TRUE); // True for disable error-mode
        if (!
$result)
        {
            return (FALSE);
        }
    }
    else
    {
        @chmod(
$new_file, 0664);
    }
    
    return (TRUE);

}

?>
Онлайн: 4
Реклама