forum.coppermine-gallery.net

Support => Русский (Russian) => Language Specific Support => cpg1.4.x FAQ (Russian) => Topic started by: HORNETZ on February 18, 2008, 12:40:59 am

Title: Квадратные миниатюры
Post by: HORNETZ on February 18, 2008, 12:40:59 am
как сделать кважратные миниатюры на cpg 1.4.16?
Title: Re: квадратные миниатюры?
Post by: Alex Revo on February 18, 2008, 04:41:55 am
Миниатуры будут автоматически созданы квадратными, если загружать исключительно квадратные фото.
Title: Re: квадратные миниатюры?
Post by: HORNETZ on February 18, 2008, 10:40:40 am
ну это понятно а хотелось бы чтобы создовались квадратные даже если фотка не квадратная
Title: Re: квадратные миниатюры?
Post by: Alex Revo on February 19, 2008, 06:33:39 am
Для этого нужно править код самой галереи.
Title: Re: квадратные миниатюры?
Post by: Orhidea on March 07, 2008, 04:47:33 pm
Я пробывал редактировать миниатюры после закачки, но ничего не вышло, миниатюры вообще перестали отображаться. Поэтому лучше загружать изначально фотографии одинаковой ширины и длины
Title: Re: квадратные миниатюры?
Post by: Makc666 on March 15, 2008, 01:46:27 pm
как сделать кважратные миниатюры на cpg 1.4.16?
Если использовать ImageMagic в качестве "Конфиг -> Метод изменения размеров изображений", то можно попробовать почитать в его документации, может ли он автоматически создавать квадратные изображения из командной строки.
"Конфиг -> Параметры командной строки для ImageMagick" 
Title: Re: квадратные миниатюры?
Post by: dim568 on May 23, 2009, 07:01:29 am
нус попытаюсь изложить как делал я)))

1. Открываем
Code: [Select]
picmgmt.inc.php
2. Ищем отрывок
Code: [Select]
   if ($thumb_use == 'ht') {
        $ratio = $srcHeight / $new_size;
   } elseif ($thumb_use == 'wd') {
        $ratio = $srcWidth / $new_size;
    } else {
        $ratio = max($srcWidth, $srcHeight) / $new_size;
    }
    $ratio = max($ratio, 1.0);

3. После него удаляем строки
Code: [Select]
   $destWidth = (int)($srcWidth / $ratio);
    $destHeight = (int)($srcHeight / $ratio);

4. Заместо них пишем
Code: [Select]
   if ($new_size<400)
    {
    $destWidth = (int)$new_size;
    $destHeight = (int)$new_size;
if($srcWidth/$srcHeight>=1)
{
$startx=($srcWidth-$srcHeight)/2;
$starty=0;
$myvalue=$srcHeight;
}else{
$startx=0;
$starty=($srcHeight-$srcWidth)/2;
$myvalue=$srcWidth;
}
    }else{
    $destWidth = (int)($srcWidth / $ratio);
    $destHeight = (int)($srcHeight / $ratio);
    }

5. Ниже ищем
Code: [Select]
case "gd2" :
6. Чуток ниже заменяем
Code: [Select]
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
на
Code: [Select]
if (isset($startx)) imagecopyresampled($dst_img, $src_img, 0, 0, $startx, $starty, $destWidth, $destHeight, $myvalue, $myvalue);
else imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);

7. сохраняем и галлерея будет автоматически делать квадратными изображения которые должны быть меньше 400 пикселей, фокус будет брать по центру исходного изображения, но это еще не все)))


для правильного отображения наших миниатюр

1. Открываем
Code: [Select]
functions.inc.php
2. Ищем
Code: [Select]
function compute_img_size($width, $height, $max)
{
         global $CONFIG;
        $thumb_use=$CONFIG['thumb_use'];
        if($thumb_use=='ht') {
          $ratio = $height / $max;
        } elseif($thumb_use=='wd') {
          $ratio = $width / $max;
        } else {
          $ratio = max($width, $height) / $max;
        }
        if ($ratio > 1.0) {
                $image_size['reduced'] = true;
        }
        $ratio = max($ratio, 1.0);

3. Ниже заменяем
Code: [Select]
       $image_size['width'] =  (int) ($width / $ratio);
        $image_size['height'] = (int) ($height / $ratio);

на
Code: [Select]
if($max<400)
        {
        $image_size['width'] =  $max;
        $image_size['height'] = $max;
        }else{
        $image_size['width'] =  (int) ($width / $ratio);
        $image_size['height'] = (int) ($height / $ratio);
        }

4. сохраняем и радуемся

понимаю что описал не есть как, поэтому прикладываю мои файлы.