1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Вывод фото в правильном соотношении сторон!

Discussion in 'Прочая Поддержка - Help Requests' started by Sultan, Oct 11, 2010.

  1. Sultan Thread starter Novice member


    Offline
    Message Count:
    32
    Likes Received:
    0
    Уважаемые форумчане! Подскажите пожалуйста...Я никак не могу понять как сделать так...чтобы фотографии в альбоме выводились скажем не 150х150 пикселей а в правильном соотношении сторон только ограниченном именно в данном диапазоне...скажем фото обрезаеться и очень уж некрасиво получаеться...а так будет типо как в контакте...фото будет выводиться в правильном соотношении сторон но в мелком виде ...точнее ограниченном!:) Заранее спасибо! Вот к примеру так http://s42.radikal.ru/i098/1010/02/3e5350ea377b.jpg
  2. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    обозначь только ширину
  3. SummerResident User


    Offline
    Message Count:
    241
    Likes Received:
    4
    Ставьте, например, ширину 150px, а высоту "auto".
  4. Sultan Thread starter Novice member


    Offline
    Message Count:
    32
    Likes Received:
    0
    Дело в том что несмотря на все это картинка выходит с добавлением перификса _thamb.jpg т.е при загрузке фото в папке аплоав юзер появляються там две фотки...одна норм а другая маленькая которая и вставляеться при выводе...если поменять путь к большой то еще что то можно придумать...только вот как?

    ---------- Сообщение добавлено в 13:30 ---------- Предыдущее сообщение было в 06:15 ----------

    При добавлении фото в альбом создаются два изображения…первое нормальное в разрешении которое мы указываем в админке а второе маленькое с разрешением 200х200 и это просто обрез фото по середине…вот именно этот обрез везьде и вставляеться вместо большого и поэтому нет смысла править файлы которые задают ширину при его выводе…нужно чтобы выводилось большое изображение соответственное строго в заданных рамках…точнее только указывая ширину а высота будет ставиться автоматом и фото будет маленькое но без обрезов…скажите пожалуйста вот этот код отвечает за вывод превюрошек в альбоме…как его подправить чтобы выводились оригинальные изображения шириной скажем 150px
    Файл browse_albums.tpl Строка 77:

    <td style='vertical-align: top;'>
    <a href='{$url->url_create('album', $albums[album_loop].album_author->user_info.user_username, $albums[album_loop].album_id)}'><img src='{$album_cover_src}' border='0' width='100' height='100'></a>
    </td>
  5. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Для начала надо сформировать нужный тумбс ..._thamb.jpg. Если тумбсы формируются 200х200, то дальнейшие манипуляции с изображением бессмысленны, уменьшенного реального исходника не получится, потому, как исходником будет всегда 200х200
    Или подставлять вместо тумбса саму фотку, но ограничив ей только ширину, при этом на стр. будут грузиться большие фото, но подстраиваться под заданную ширину, будет желаемый эффект, но возрастёт время загрузки страницы.
  6. Sultan Thread starter Novice member


    Offline
    Message Count:
    32
    Likes Received:
    0
    Я так понимаю создание превюрошек осуществляеться в файле user_album_upload.php если кто знает как можно в нем решить проблему обрезывания thamb.jpg буду очень признателен!
  7. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    PHP:

              $media_width 
    $misc->photo_size($local_media_path"100""100""w");
              
    $media_height $misc->photo_size($local_media_path"100""100""h");
    ./include/class_upload.php. а может тут

    PHP:
    function upload_thumb($photo_dest$file_maxdim "60")
      {
          
    // SET DESIRED WIDTH AND HEIGHT
        
    $x 0;
        
    $y 0;
          
    $width $this->file_width;
          
    $height $this->file_height;
          if(
    $width $height)
        { 
            
    $x ceil(($width $height) / 2);
            
    $width $height;
          }
        elseif(
    $width $height)
        {
            
    $y ceil(($height $width) / 2);
            
    $height $width;
          }
    ./include/class_album.php или тут
    PHP:

            $media_id 
    $database->database_insert_id();
          
            
    // CHECK IF IMAGE RESIZING IS AVAILABLE, OTHERWISE MOVE UPLOADED IMAGE
            
    if($new_media->is_image == 1)
          {
              
    $file_dest $url->url_userdir($user->user_info[user_id]).$media_id.".jpg";
              
    $thumb_dest $url->url_userdir($user->user_info[user_id]).$media_id."_thumb.jpg";
            
              
    // UPLOAD THUMB
              
    $new_media->upload_thumb($thumb_dest200);
            
              
    // UPLOAD FILE
              
    $new_media->upload_photo($file_dest);
            
              
    $file_ext "jpg";
              
    $file_filesize filesize($file_dest);
            }
          else
          {
              
    $file_dest $url->url_userdir($user->user_info[user_id]).$media_id.".".$new_media->file_ext;
            
              
    // UPLOAD THUMB IF NECESSARY
              
    if($new_media->file_ext == 'gif')
            {
                
    $thumb_dest $url->url_userdir($user->user_info[user_id]).$media_id."_thumb.jpg";
                
    $new_media->upload_thumb($thumb_dest200);
              }
  8. Sultan Thread starter Novice member


    Offline
    Message Count:
    32
    Likes Received:
    0
    В ./include/class_album.php есть строка
    // UPLOAD THUMB
    $new_media->upload_thumb($thumb_dest, 200);
    именно в таком размере 200 пикселей и обрезаеться изображение...пробывал менять все работает...получаеться надо прописать функцию чтобы изображение сжималось до определенного размера...соответственно чтобы соотношение сторон не менялось...как думаете такой код ниже подходит...если да то подскажите что там нужно заменить! Пытался но пока не получилось!:stena:


    // THIS METHOD CREATES A SQUARE THUMBNAIL
    // INPUT: $photo_dest REPRESENTS THE DESTINATION OF THE UPLOADED PHOTO
    // $file_maxdim (OPTIONAL) REPRESENTING THE MAXIMUM WIDTH AND HEIGHT OF THE UPLOADED PHOTO
    // OUTPUT: BOOLEAN INDICATING WHETHER UPLOAD SUCCEEDED OR FAILED

    function upload_thumb($photo_dest, $file_maxdim = "60")
    {
    // SET DESIRED WIDTH AND HEIGHT
    $x = 0;
    $y = 0;
    $width = $this->file_width;
    $height = $this->file_height;
    if($width > $height)
    {
    $x = ceil(($width - $height) / 2);
    $width = $height;
    }
    elseif($width < $height)
    {
    $y = ceil(($height - $width) / 2);
    $height = $width;
    }

    // RESIZE IMAGE AND PUT IN USER DIRECTORY
    switch($this->file_ext)
    {
    case "gif":
    $file = imagecreatetruecolor($file_maxdim, $file_maxdim);
    $new = imagecreatefromgif($this->file_tempname);
    $kek=imagecolorallocate($file, 255, 255, 255);
    imagefill($file,0,0,$kek);
    imagecopyresampled($file, $new, 0, 0, $x, $y, $file_maxdim, $file_maxdim, $width, $height);
    imagejpeg($file, $photo_dest, 100);
    ImageDestroy($new);
    ImageDestroy($file);
    break;

    case "bmp":
    $file = imagecreatetruecolor($file_maxdim, $file_maxdim);
    $new = $this->imagecreatefrombmp($this->file_tempname);
    for($i=0; $i<256; $i++) { imagecolorallocate($file, $i, $i, $i); }
    imagecopyresampled($file, $new, 0, 0, $x, $y, $file_maxdim, $file_maxdim, $width, $height);
    imagejpeg($file, $photo_dest, 100);
    ImageDestroy($new);
    ImageDestroy($file);
    break;

    case "jpeg":
    case "jpg":
    $file = imagecreatetruecolor($file_maxdim, $file_maxdim);
    $new = imagecreatefromjpeg($this->file_tempname);
    for($i=0; $i<256; $i++) { imagecolorallocate($file, $i, $i, $i); }
    imagecopyresampled($file, $new, 0, 0, $x, $y, $file_maxdim, $file_maxdim, $width, $height);
    imagejpeg($file, $photo_dest, 100);
    ImageDestroy($new);
    ImageDestroy($file);
    break;

    case "png":
    $file = imagecreatetruecolor($file_maxdim, $file_maxdim);
    $new = imagecreatefrompng($this->file_tempname);
    for($i=0; $i<256; $i++) { imagecolorallocate($file, $i, $i, $i); }
    imagecopyresampled($file, $new, 0, 0, $x, $y, $file_maxdim, $file_maxdim, $width, $height);
    imagejpeg($file, $photo_dest, 100);
    ImageDestroy($new);
    ImageDestroy($file);
    break;
    }

    chmod($photo_dest, 0777);

    return true;
    }

    // END upload_thumb() METHOD


    ---------- Сообщение добавлено в 21:08 ---------- Предыдущее сообщение было в 08:38 ----------

    Вот прикинул как выводяться фотки вместо их превюрошек...http://s57.radikal.ru/i157/1010/40/3f84b8a04f34.jpg просто в файле album.tpl в строчке 30 убрал {assign var='file_src' value="`$file_dir``$files[files_loop].media_id`_thumb.jpg"} и выводиться стали оригинальные изображения...вот как раз так и надо был...теперь вот никак не могу понять как создаються превюрошки...:(

    ---------- Сообщение добавлено в 21:39 ---------- Предыдущее сообщение было в 21:08 ----------

    Скажите пожалуйста за что отвечает этот код в файле user_album_upload.php
    $media_path = str_replace('./', '', $url->url_userdir($user->user_info['user_id']).$file_result[$fileid]['media_id']."_thumb.jpg");
  9. Sultan Thread starter Novice member


    Offline
    Message Count:
    32
    Likes Received:
    0
    Опять задаюсь вопросом не слишком уж удачного обрезывания изображений! Смотрим код..../include/class_album.php
    if($new_media->is_image == 1)
    {
    $file_dest = $url->url_userdir($user->user_info[user_id]).$media_id.".jpg";
    $thumb_dest = $url->url_userdir($user->user_info[user_id]).$media_id."_thumb.jpg";

    // UPLOAD THUMB
    $new_media->upload_thumb($thumb_dest, 200);

    // UPLOAD FILE
    $new_media->upload_photo($file_dest);

    $file_ext = "jpg";
    $file_filesize = filesize($file_dest);
    }
    else
    {
    $file_dest = $url->url_userdir($user->user_info[user_id]).$media_id.".".$new_media->file_ext;


    Все превюрошки создаються в размере 200х200 если изображение изначально меньшего размера на выходе изображение прибавляет в весе...если изображение изначально большего размера на выходе мы увидим его центральную часть размером 200х200px...соответствено если додумать до того чтобы превюрошки создавались max-width:100px; а высотой не более 100 применяя этот вид вывода <img src='{$file_src}' border='0' width='{$misc->photo_size($file_src,'100','100','w')}'> все будет как по маслу + запретить загрузку уж очень больших фоток ограничив максимальный размер загружаемого изображения...Может подскажет кто как можно применить принцип сжатия для оригинальных изображений к превюрошкам:)

    Может этот код то что надо???Может надо его добавить в ./include/class_album.php и переделать???

    Взят из ./include/class_upload.php.

    function upload_thumb($photo_dest, $file_maxdim = "60")
    {
    // SET DESIRED WIDTH AND HEIGHT
    $x = 0;
    $y = 0;
    $width = $this->file_width;
    $height = $this->file_height;
    if($width > $height)
    {
    $x = ceil(($width - $height) / 2);
    $width = $height;
    }
    elseif($width < $height)
    {
    $y = ceil(($height - $width) / 2);
    $height = $width;
    }
  10. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    путь до файла

Share This Page

All rights reserved SocEngine.ru ©