Модуль Уменьшенные Изображения с фиксированой шириной и длиной

Тема в разделе "DLE", создана пользователем =x2=, 18 ноя 2007.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. =x2=

    =x2= Прохожие

    Ребят, подскажите, как выровнять уменьшенные изображения (превью) по ширине и длине?
    Например все превьюшки 150на150.
    Тоесть не пропорциональное уменьшение как стоит, а обрезка краёв.
    Ну или что то в этом роде.
    Спасибо.
     
  2. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    НУ вообщето меняется в настройках. А вот если ты хочешь, что бы оно без пропорций уменьшалось, прям 150х150, то это надо код переписыать
     
  3. webjema

    webjema Создатель

    Регистр.:
    1 сен 2007
    Сообщения:
    46
    Симпатии:
    6
    imagemagick это умеет делать на сервере, одной командой, но это нужно код править. Если будешь править, могу подсказать команду для imagemagick
     
  4. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    Открываешь файл engine/inc/makethumb.php
    Находишь там


    PHP:
    function size_auto($size 100) { 
        global 
    $gd_version;

        if (
    $this->img["lebar"] < $size AND $this->img["tinggi"] < $size ) {
            
    $this->img["lebar_thumb"]  = $this->img["lebar"];
            
    $this->img["tinggi_thumb"] = $this->img["tinggi"];
         return 
    0;
        } elseif (
    $this->img["lebar"] >= $this->img["tinggi"]) {
            
    $this->img["lebar_thumb"] = $size;
            
    $this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
        } else {
            
    $this->img["tinggi_thumb"] = $size;
            
    $this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
        }

    if(
    $gd_version==1) {
        
    $this->img["des"] = imagecreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
        @
    imagecopyresized ($this->img["des"], $this->img["src"], 0000$this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);
      } elseif(
    $gd_version==2) {
         
    $this->img["des"] = imagecreatetruecolor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
        @
    imagecopyresampled ($this->img["des"], $this->img["src"], 0000$this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);
      }

        
    $this->img["src"] = $this->img["des"];
        return 
    1;
    }

    заменяешь на:

    PHP:
    function size_auto($size 100) { 
        
        global 
    $gd_version;
        
      
    // lebar - x
      // tinngi - y

        
    if ($this -> img["lebar"] < $size AND $this->img["tinggi"] < $size ) {
            
    $this -> img["lebar_thumb"]  = $this->img["lebar"];
            
    $this -> img["tinggi_thumb"] = $this->img["tinggi"];
            return 
    0;
            
        } else {
            
    $this -> img["tinggi_thumb"] = $size;
            
    $this -> img["lebar_thumb"]  = $size;
        }

        
      
    // Если библиотека версии 1 используем более простое обрезание
        
    if($gd_version == 1) {
            
          
    //создаём новое изображение
             
    $this->img["des"] = imagecreate($this->img["lebar_thumb"], $this->img["tinggi_thumb"]);
             
          
    // Вырезаем участок рисунка
             
    if ($this->img["lebar_thumb"] > $this->img["tinggi_thumb"]) 
                 @
    imagecopyresized($this->img["des"], $this->img["src"], 00,
                              
    round((max($this->img["lebar"], $this->img["tinggi"]) - min($this->img["lebar"], $this->img["tinggi"]))/2),
                              
    0$this->img["lebar_thumb"], $this->img["tinggi_thumb"], 
                              
    min($this->img["lebar"], $this->img["tinggi"]), min($this->img["lebar"],$this->img["tinggi"])); 

             if (
    $this->img["lebar_thumb"] < $this->img["tinggi_thumb"]) 
                 @
    imagecopyresized($this->img["des"], $this->img["src"], 0000$this->img["lebar_thumb"], $this->img["tinggi_thumb"],
                              
    min($this->img["lebar"], $this->img["tinggi"]), min($this->img["lebar"], $this->img["tinggi"])); 
                              
             if (
    $this->img["lebar_thumb"] == $this->img["tinggi_thumb"]) 
                 @
    imagecopyresized($this->img["des"], $this->img["src"], 0000$this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);
              
        
      
    // Если библиотека версии 2 используем более сложное обрезание
        
    } elseif($gd_version == 2) {
            
              
    //создаём новое изображение
                
    $this->img["des"] = imagecreatetruecolor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
                
           
    // Вырезаем участок рисунка
             
    if ($this->img["lebar_thumb"] > $this->img["tinggi_thumb"]) 
                 @
    imagecopyresampled ($this->img["des"], $this->img["src"], 00,
                              
    round((max($this->img["lebar"], $this->img["tinggi"]) - min($this->img["lebar"], $this->img["tinggi"]))/2),
                              
    0$this->img["lebar_thumb"], $this->img["tinggi_thumb"], 
                              
    min($this->img["lebar"], $this->img["tinggi"]), min($this->img["lebar"],$this->img["tinggi"])); 

             if (
    $this->img["lebar_thumb"] < $this->img["tinggi_thumb"]) 
                 @
    imagecopyresampled ($this->img["des"], $this->img["src"], 0000$this->img["lebar_thumb"], $this->img["tinggi_thumb"],
                              
    min($this->img["lebar"], $this->img["tinggi"]), min($this->img["lebar"], $this->img["tinggi"])); 
                              
             if (
    $this->img["lebar_thumb"] == $this->img["tinggi_thumb"]) 
                 @
    imagecopyresampled ($this->img["des"], $this->img["src"], 0000$this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);
        }

        
    $this->img["src"] = $this->img["des"];
        return 
    1;
    }
    Теперь все уменьшенные копиии будут получаться квадратными.

    потом в админке поставишь уменьшать фотки до каких пикселей 150 как тебе нужно. (настройки системы-настройка работы с изображениями-Размер уменьшенной копии загруженного изображения:
    Максимальный размер в пикселях любой из сторон загружаемой картинки при превышении которого будет создаваться уменьшенная копия)

    всё :)
     
  5. h0ttab[sun]

    h0ttab[sun]

    Регистр.:
    30 авг 2007
    Сообщения:
    319
    Симпатии:
    43
    хм.. а если кратинка шыре %)... то чтоже?.. он будет ее бочинить %)?
     
  6. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    поидеи он (makethumb.php) теперь должен создавать квадрат из любой картинки
     
  7. dm_mb

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    а под 7.5 версию помогите доработать. а то там код другой :(
     
Статус темы:
Закрыта.