Помощник
|
Помогите доработать функцию |
sc2r2bey
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
13.2.2010, 0:18;
Ответить: ZiTosS
Сообщение
#2
|
|
sc2r2bey, функция конечно полезная, но поддерживает тока JPG.
Да и функция немного не правильно написана. Обычно задают мин размер одной из сторон. Тогда скрипт сам определит, какая сторона и меньше, ту и подгонит под этот размер, а большую сторону пропорционально уменьшит. А если ещё задать какую именно сторону сжимать, по ширине или по высоте, то будет ещё удобнее создавать картинки предпросмотра в галереях. В этом случае они все будут вровень либо по высоте, либо по ширине. разобрасля заменил $ratio<$src_ratio на $ratio>$src_ratio Тему можно закрывать? Или всё же функция нуждается в доработке? |
|
|
sc2r2bey
|
Сообщение
#3
|
|
можно здесь поподробнее(очень ценные замечания!)?
-------------------- программирую web и для we |
|
|
ZiTosS |
13.2.2010, 0:43;
Ответить: ZiTosS
Сообщение
#4
|
|
sc2r2bey, вот тебе код класса, который создаёт thumb_image, Посмотри как тут всё реализовано:
[php]<?php //requires GD 2.0.1 or higher class ThumbnailImage{ //private data mambers var $image; var $maxdimension; //not applicable to gif or png var $quality=100; var $fileextension; var $mimetype; var $imageproperties; var $types= array("jpg", "jpeg", "gif", "png"); //////////////////////////////////////////////////////// //constructor //////////////////////////////////////////////////////// function ThumbnailImage($path, $maxdimension=100){ $this->maxdimension=$maxdimension; //check path is_file($path) or die ("File: $path doesn't exist."); //check type $extension=substr($path,(strpos($path, ".")+1)); $extension= strtolower($extension); in_array($extension, $this->types) or die ("Incorrect file type."); $this->fileextension=$extension; $this->setMimeType($extension); //get dimensions by creating imageproperties $this->imageproperties = GetImageSize($path); //create image if($extension=="jpeg" || $extension=="jpg"){ $this->image=imagecreatefromJPEG($path); }elseif($extension=="gif"){ $this->image=imagecreatefromGIF($path); }elseif($extension=="png"){ $this->image=imagecreatefromPNG($path); }else{ die("Couldn't create image."); } $this->createThumb(); } //////////////////////////////////////////////////////// //public methods //////////////////////////////////////////////////////// function getImage(){ header("Content-type: $this->mimetype"); if($this->fileextension=="jpeg" || $this->fileextension=="jpg"){ imagejpeg($this->image,"",$this->quality); }elseif($this->fileextension=="gif"){ imagegif($this->image); }elseif($this->fileextension=="png"){ imagepng($this->image); }else{ die("Couldn't create image."); } } //////////////////////////////////////////////////////// function getMimeType(){ return $this->mimetype; } //////////////////////////////////////////////////////// function getQuality(){ $quality; if($this->fileextension=="jpeg" || $this->fileextension=="jpg"){ $quality=$this->quality; }else{ $quality=-1; } return quality; } //////////////////////////////////////////////////////// function setQuality($quality){ if($quality > 100 || $quality < 1) $quality=75; if($this->mimetype=="image/jpeg"){ $this->quality=$quality; } } //////////////////////////////////////////////////////// function destroy(){ imagedestroy($this->image); } //////////////////////////////////////////////////////// //private methods //////////////////////////////////////////////////////// function setMimeType($extension){ if($extension=="jpeg" || $extension=="jpg"){ $this->mimetype="image/jpeg"; }elseif($extension=="png"){ $this->mimetype="image/png"; }elseif($extension=="gif"){ $this->mimetype="image/gif"; }else{ die ("Not a recognized type."); } } //////////////////////////////////////////////////////// function createThumb(){ $srcW=$this->imageproperties[0]; $srcH=$this->imageproperties[1]; //only adjust if larger than max if($srcW>$this->maxdimension || $srcH>$this->maxdimension){ $reduction=$this->calculateReduction($srcW,$srcH); //get proportions $desW=round($srcW/$reduction); $desH=round($srcH/$reduction); //check for gif //create copy from original if($this->mimetype=="image/gif"){ $copy=imagecreate($desW, $desH); }else{ $copy=imagecreatetruecolor($desW, $desH); } imagecopyresampled($copy,$this->image,0,0,0,0,$desW, $desH, $srcW, $srcH) or die ("Image copy failed."); //destroy original imagedestroy($this->image); $this->image=$copy; } } //////////////////////////////////////////////////////// function calculateReduction($srcW, $srcH){ //adjust if($srcW<$srcH){ $reduction=$srcH/$this->maxdimension; }else{ $reduction=$srcW/$this->maxdimension; } return $reduction; } }//end class //////////////////////////////////////////////////////// ?>[/php] |
|
|
sc2r2bey
|
Сообщение
#5
|
|
блин опять класс
-------------------- программирую web и для we |
|
|
ZiTosS |
13.2.2010, 1:07;
Ответить: ZiTosS
Сообщение
#6
|
|
sc2r2bey, его использование
файл image.php [php]$Thumb = new ThumbnailImage('[путь до уменьшаемого изображения]', [min размер стороны]); // создаём объект картинки предпросмотра $Thumb->getImage(); // выводим картинку предпросмотра[/php] файл HTML ... <img src=".../image.php" /> ... Ну это всё к примеру, путь до файла можно передавать в GET параметре в зашифрованном виде. А можно и в нешифрованном. Думаю, заметно как удобно использовать данный класс, так же можно назначать качество JPG, интерфейс на нормальном уровне. |
|
|
sc2r2bey
|
Сообщение
#7
|
|
у меня есть эта книга и скрипты к ней, пока не хочу лезть в классы, пока с линейным не разберусь на уверенно
-------------------- программирую web и для we |
|
|
gaaarfild |
12.3.2010, 16:57;
Ответить: gaaarfild
Сообщение
#8
|
|
|
Лезь и не переживай. =) линейное уже освоено. Я поначалу физически не понимал их. оказалось, что проще. =)
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Помогите вспомнить рекламного бота Телеграм для обмена рекламой | 0 | Mixatraider | 725 | 21.2.2024, 23:42 автор: Mixatraider |
|
Помогите рещить проблему с монитором. Почему низкое разрешение при подключении монитора через displayport? |
0 | Levels | 1702 | 11.12.2020, 0:48 автор: Levels |
|
Помогите кто нибудь получить партнерку Росбанк! | 7 | heisenberg_mw | 2341 | 7.8.2020, 9:28 автор: heisenberg_mw |
|
Помогите найти тему пожалуйста | 7 | virtas | 12502 | 24.7.2020, 17:02 автор: -JamesSmips- |
|
Доработать Сайт Нужна доработка сайта |
0 | nazar2292 | 1287 | 31.3.2020, 12:59 автор: nazar2292 |
Текстовая версия | Сейчас: 20.4.2024, 9:32 |