Функции класса:
— Создание нового изображения с указанными размерами и цветом. или просто загружаем существующее (можно через URL-CURL ).
— Наложение логотипа в любой угол изображения
— Изменение изображения, если установить ширину и высоту равной, то деформация незаметна
— Наложение текста, тут полная функциональность, можно выбрать: координаты, прозрачность надписи, угол надписи, цвет надписи
— сохранение и вывод изображения (можно 2 в 1, а можно сохранять на разных этапах создания).
P.S. Данный класс сделан конкретно для использования GD, ImageMagick — это отдельная тема, поэтому пока прошу ее опустить.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- class cms_img {
- protected $srcImage=false; // дескриптор созданного изображения
- protected $coordinate=4; // 1-верхний, левый, 2-правый, верхний, 3-нижний, правый...
- protected $namefile='000.png';
- protected $tmp='000.png';
- protected $image_type=3;
- // Передаем дефолтное название картинки, если оно в дальнейшем не будет указано и тип создаваемого изображения
- function __construct($tmp='000.png',$image_type=3,$namefile='000.png') {
- $this->image_type=$image_type;
- $this->namefile=$namefile;
- $this->tmp=$tmp;
- }
- // Произвести принудительную замену типа изображения? доступные значение:
- // 1=GIF ; 2=JPEG; 3=PNG
- protected function set_type($type) {
- if($type==1||$type==2||$type==3){
- $this->image_type=$type;
- }
- }
- // Метод для получения dst_x и dst_y функции imagecopy
- protected function coordinat($srcWidth, $srcHeight, $logoWidth, $logoHeight){
- if($this->coordinate==1){
- $this->coord['dst_x']=0;
- $this->coord['dst_y']=0;
- } elseif($this->coordinate==2){
- $this->coord['dst_x']=$srcWidth - $logoWidth;
- $this->coord['dst_y']=0;
- } elseif($this->coordinate==3){
- $this->coord['dst_x']=$srcWidth - $logoWidth;
- $this->coord['dst_y']=$srcHeight - $logoHeight;
- } elseif($this->coordinate==5){
- $this->coord['dst_x']=$srcWidth/2 - $logoWidth/2;
- $this->coord['dst_y']=$srcHeight/2 - $logoHeight/2;
- } else {
- $this->coord['dst_x']=0;
- $this->coord['dst_y']=$srcHeight - $logoHeight;
- }
- }
- // создаёт новое изображение из файла
- // $filename адрес исхизображения
- protected function imagecreatefrom($filename) {
- $this->image_type=$image_info[2];
- if($this->image_type==2 ) {
- } elseif($this->image_type==1 ) {
- } elseif($this->image_type==3 ) {
- } else {
- return false;
- }
- }
- // загрузка изображения из файла аргумент
- // $img от куда читаем
- public function load($img){
- $this->namefile=$img;
- if($this->imagecreatefrom($this->namefile)!=false){
- $this->srcImage = $this->imagecreatefrom($this->namefile);
- } else {
- return false;
- }
- }
- // Вывод изображения на экран
- public function output(){
- if($this->image_type==2){
- } elseif($this->image_type==1){
- } else {
- }
- }
- // Получаем расширение файла, метод необходим для автоматическом добавлении расширения файла используемом в методе save()
- public function extension(){
- if($this->image_type==2){
- return "jpg";
- } elseif($this->image_type==1){
- return "gif";
- } else {
- return "png";
- }
- }
- // Сохранение изображения в файл аргумент $namefile - куда сохранять
- public function save($namefile=false,$type=false){
- $this_namefile=$namefile?$namefile:$this->namefile;
- $type==1?$this_namefile.'.'.$this->extension():$this_namefile;
- if($this->image_type==2) {
- } elseif($this->image_type==1 ) {
- } else {
- }
- }
- // Получение ширины и высоты текущего изображения
- public function sxy(){
- }
- // Установка логотипа на изображение
- // $logosrc - адрес логотипа, $coordinate = угол изображения:
- // 1-верхний, левый, 2-правый, верхний, 3-нижний, правый...
- public function setlogo($logosrc,$coordinate=false)
- {
- $this->coordinate=$coordinate!=false&&filter_var($coordinate,FILTER_VALIDATE_INT)?$coordinate:$this->coordinate;
- $logoImage = $this->imagecreatefrom($logosrc);
- $this->coordinat($srcWidth, $srcHeight, $logoWidth, $logoHeight);
- imagecopy($this->srcImage, $logoImage, $this->coord['dst_x'], $this->coord['dst_y'],0,0, $logoWidth, $logoHeight);
- }
- // Изменение размера изображения
- // $width - ширина, $height высота,
- // если не указать $height , то аргумент $width будет считать процентным соотношением во сколько процентов изменять масштаб
- public function resize($width,$height=false){
- // Проверяем корректность введения ширины и высоты
- // Если ширина не указана или указана некорректно, то будет игнорироватся изменение масштаба изображения
- if(($width!='100'&&$height==false) or ($width!=false&&$height!=false)){
- // Если не указана высота, то по процентному соотношению вычисляем новый масштаб
- if($height==false){
- $height=($h_src/100)*$width;
- $width=($w_src/100)*$width;
- }
- if($height==$width){
- if ($w_src>$h_src) {
- } else {
- }
- } else {
- }
- $this->srcImage=$dest;
- }
- }
- // освобождает память, ассоциированную с изображением
- public function destroy(){
- }
- // Наложение текста на изображение
- // $text - текст, $fontfile - путь к файлу со шрифтами, $color цвет в виде #000000, по умолчанию #000000
- // $size - размер шрифта , $angle - угол в градусах , $x - координата x - от куда печатать, $y - координата y, от куда печатать,
- // $pr - прозрачность от 0-непрозрачно до 127 - обсалютно прозрачно
- public function text($text,$fontfile,$color='#000000',$size=20,$angle=0,$x=10,$y=10,$pr=0){
- $col=$this->htmltorgb($color);
- }
- // Метод для получения цвета из html в rgb
- // $color - цвет в html
- protected function htmltorgb($color)
- {
- if ($color[0] == '#'){
- }
- } else {
- return false;
- }
- }
- // Создает новое изображение шириной $width и высотой $height
- // цветом $color (в html виде , по умолчанию #ffffff)
- // Если нужна прозрачность то 4 аргумент $pr указывать $pr=1
- public function create($width,$height,$color='#ffffff',$pr=false) {
- $col=$this->htmltorgb($color);
- if($pr==1){
- }
- }
- // Возвращает идентификатор изображения для работы с ним вне класса
- public function return_img(){
- return $this->srcImage;
- }
- // Передаем идентификатор изображения для работы с ним внутри класса
- // $img - идентификатор загружаемого изображения
- public function set_img($img){
- $this->srcImage=$img;
- }
- // освобождает память, ассоциированную с изображением
- function __destruct() {
- }
- // метод получения изображения по URL
- // $url - урл изображения, $tmp - временное место хранения
- public function load_url($url,$tmp){
- curl_setopt ($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
- return false;
- } else {
- return true;
- }
- } else {
- return false;
- }
- }
- }