Новичок
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.11.2008
Репутация: нет Всего: нет
|
Целый день мудтлся ничего не вышло Вот файл thumb.php| Код | <?php
############################################################### # Thumbnail Image Generator 1.3 ############################################################### # Visit http://www.zubrag.com/scripts/ for updates ###############################################################
// REQUIREMENTS: // PHP 4.0.6 and GD 2.0.1 or later // May not work with GIFs if GD2 library installed on your server // does not support GIF functions in full
// Parameters: // src - path to source image // dest - path to thumb (where to save it) // x - max width // y - max height // q - quality (applicable only to JPG, 1 to 100, 100 - best) // t - thumb type. "-1" - same as source, 1 = GIF, 2 = JPG, 3 = PNG // f - save to file (1) or output to browser (0).
// Sample usage: // 1. save thumb on server // http://www.zubrag.com/thumb.php?src=test.jpg&dest=thumb.jpg&x=100&y=50 // 2. output thumb to browser // http://www.zubrag.com/thumb.php?src=test.jpg&x=50&y=50&f=0
// Below are default values (if parameter is not passed)
// save to file (true) or output to browser (false) $save_to_file = false;
// Quality for JPEG and PNG. // 0 (worst quality, smaller file) to 100 (best quality, bigger file) // Note: PNG quality is only supported starting PHP 5.1.2 $image_quality = 100;
// resulting image type (1 = GIF, 2 = JPG, 3 = PNG) // enter code of the image type if you want override it // or set it to -1 to determine automatically $image_type = -1;
// maximum thumb side size $max_x = 100; $max_y = 100;
// cut image before resizing. Set to 0 to skip this. $cut_x = 0; $cut_y = 0;
// Folder where source images are stored (thumbnails will be generated from these images). // MUST end with slash. $images_folder = '/www_host/hosts/softers.zx6.ru/images/';
// Folder to save thumbnails, full path from the root folder, MUST end with slash. // Only needed if you save generated thumbnails on the server. // Sample for windows: c:/wwwroot/thumbs/ // Sample for unix/linux: /home/site.com/htdocs/thumbs/ $thumbs_folder = '/www_host/hosts/softers.zx6.ru/iresize/images/';
/////////////////////////////////////////////////// /////////////// DO NOT EDIT BELOW ///////////////////////////////////////////////////
$to_name = '';
if (isset($_REQUEST['f'])) { $save_to_file = intval($_REQUEST['f']) == 1; }
if (isset($_REQUEST['src'])) { $from_name = urldecode($_REQUEST['src']); } else { die("Source file name must be specified."); }
if (isset($_REQUEST['dest'])) { $to_name = urldecode($_REQUEST['dest']); } else if ($save_to_file) { die("Thumbnail file name must be specified."); }
if (isset($_REQUEST['q'])) { $image_quality = intval($_REQUEST['q']); }
if (isset($_REQUEST['t'])) { $image_type = intval($_REQUEST['t']); }
if (isset($_REQUEST['x'])) { $max_x = intval($_REQUEST['x']); }
if (isset($_REQUEST['y'])) { $max_y = intval($_REQUEST['y']); }
if (!file_exists($images_folder)) die('Images folder does not exist (update $images_folder in the script)'); if ($save_to_file && !file_exists($thumbs_folder)) die('Thumbnails folder does not exist (update $thumbs_folder in the script)');
// Allocate all necessary memory for the image. // Special thanks to Alecos for providing the code. ini_set('memory_limit', '-1');
// include image processing code include('image.class.php');
$img = new Zubrag_image;
// initialize $img->max_x = $max_x; $img->max_y = $max_y; $img->cut_x = $cut_x; $img->cut_y = $cut_y; $img->quality = $image_quality; $img->save_to_file = $save_to_file; $img->image_type = $image_type;
// generate thumbnail $img->GenerateThumbFile($images_folder . $from_name, $thumbs_folder . $to_name);
?>
|
image.class.php| Код | <?php
############################################################### # Thumbnail Image Class for Thumbnail Generator ############################################################### # For updates visit http://www.zubrag.com/scripts/ ###############################################################
class Zubrag_image {
var $save_to_file = true; var $image_type = -1; var $quality = 100; var $max_x = 100; var $max_y = 100; var $cut_x = 0; var $cut_y = 0; function SaveImage($im, $filename) { $res = null; // ImageGIF is not included into some GD2 releases, so it might not work // output png if gifs are not supported if(($this->image_type == 1) && !function_exists('imagegif')) $this->image_type = 3;
switch ($this->image_type) { case 1: if ($this->save_to_file) { $res = ImageGIF($im,$filename); } else { header("Content-type: image/gif"); $res = ImageGIF($im); } break; case 2: if ($this->save_to_file) { $res = ImageJPEG($im,$filename,$this->quality); } else { header("Content-type: image/jpeg"); $res = ImageJPEG($im, NULL, $this->quality); } break; case 3: if (PHP_VERSION >= '5.1.2') { // Convert to PNG quality. // PNG quality: 0 (best quality, bigger file) to 9 (worst quality, smaller file) $quality = 9 - min( round($this->quality / 10), 9 ); if ($this->save_to_file) { $res = ImagePNG($im, $filename, $quality); } else { header("Content-type: image/png"); $res = ImagePNG($im, NULL, $quality); } } else { if ($this->save_to_file) { $res = ImagePNG($im, $filename); } else { header("Content-type: image/png"); $res = ImagePNG($im); } } break; } return $res; } function ImageCreateFromType($type,$filename) { $im = null; switch ($type) { case 1: $im = ImageCreateFromGif($filename); break; case 2: $im = ImageCreateFromJpeg($filename); break; case 3: $im = ImageCreateFromPNG($filename); break; } return $im; } // generate thumb from image and save it function GenerateThumbFile($from_name, $to_name) { // if src is URL then download file first $temp = false; if (substr($from_name,0,7) == 'http://') { $tmpfname = tempnam("tmp/", "TmP-"); $temp = @fopen($tmpfname, "w"); if ($temp) { @fwrite($temp, @file_get_contents($from_name)) or die("Cannot download image"); @fclose($temp); $from_name = $tmpfname; } else { die("Cannot create temp file"); } }
// check if file exists if (!file_exists($from_name)) die("Source image does not exist!"); // get source image size (width/height/type) // orig_img_type 1 = GIF, 2 = JPG, 3 = PNG list($orig_x, $orig_y, $orig_img_type, $img_sizes) = @GetImageSize($from_name);
// cut image if specified by user if ($this->cut_x > 0) $orig_x = min($this->cut_x, $orig_x); if ($this->cut_y > 0) $orig_y = min($this->cut_y, $orig_y); // should we override thumb image type? $this->image_type = ($this->image_type != -1 ? $this->image_type : $orig_img_type); // check for allowed image types if ($orig_img_type < 1 or $orig_img_type > 3) die("Image type not supported"); if ($orig_x > $this->max_x or $orig_y > $this->max_y) { // resize $per_x = $orig_x / $this->max_x; $per_y = $orig_y / $this->max_y; if ($per_y > $per_x) { $this->max_x = $orig_x / $per_y; } else { $this->max_y = $orig_y / $per_x; } } else { // keep original sizes, i.e. just copy if ($this->save_to_file) { @copy($from_name, $to_name); } else { switch ($this->image_type) { case 1: header("Content-type: image/gif"); readfile($from_name); break; case 2: header("Content-type: image/jpeg"); readfile($from_name); break; case 3: header("Content-type: image/png"); readfile($from_name); break; } } return; } if ($this->image_type == 1) { // should use this function for gifs (gifs are palette images) $ni = imagecreate($this->max_x, $this->max_y); } else { // Create a new true color image $ni = ImageCreateTrueColor($this->max_x,$this->max_y); } // Fill image with white background (255,255,255) $white = imagecolorallocate($ni, 255, 255, 255); imagefilledrectangle( $ni, 0, 0, $this->max_x, $this->max_y, $white); // Create a new image from source file $im = $this->ImageCreateFromType($orig_img_type,$from_name); // Copy the palette from one image to another imagepalettecopy($ni,$im); // Copy and resize part of an image with resampling imagecopyresampled( $ni, $im, // destination, source 0, 0, 0, 0, // dstX, dstY, srcX, srcY $this->max_x, $this->max_y, // dstW, dstH $orig_x, $orig_y); // srcW, srcH // save thumb file $this->SaveImage($ni, $to_name);
if($temp) { unlink($tmpfname); // this removes the file }
}
}
?>
|
Прошу очень, сделайте все необходимые изменения и выложите сюда.
|