Перейти к контенту
  • 0

Где хранятся данные $width и $height для рисунков


vasiliyb

Вопрос

Где хранятся данные переменных $width $height для функции:

 

function Show_attachments_img_thumb($file_name, $width, $height, $aid)

 

если в MySQL, то где (в какой таблице)?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

       $im = $std->scale_image( array(
            	 'max_width'  => $ibforums->vars['siu_width'],
            	 'max_height' => $ibforums->vars['siu_height'],
            	 'cur_width'  => $img_size[0],
            	 'cur_height' => $img_size[1]
              )      );

    	 $row['attachment'] = $this->html->Show_attachments_img_thumb( $row['attach_id'], $im['img_width'], $im['img_height'], $row['pid'] );

Отсюда видно, что они либо берутся из настроек форума (размер Thumb'a, который задаётся в System Settings -> Topics, Posts & Polls в админке), либо из размеров самого изображения (которые определяются функцией GetImageSize).

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да, я экспериментальным путем нашел, хранятся они в global_conf.php , а я базу лопатил:D

Вот кусок, который мне интересен, дело в том, что я хочу, чтобы thumbnail для загружаемых картинок

делался пропорциональным, в данном случае жестко выставлено 300x201

 

$INFO['siu_height']  	=	'201';
$INFO['siu_thumb']  	=	'1';
$INFO['siu_width']  	=	'300';

 

Если делаешь

$INFO['siu_height']  	=	'50%';
$INFO['siu_thumb']  	=	'1';
$INFO['siu_width']  	=	'50%';

 

почему-то в итоговом html пропадает символ %, вот как это выглядит:

<img src='http://www.xxx.com/members/forum/uploads/post-5-1075310729.jpg' width='50%' height='50' class='attach' alt='Attached Image' />

 

Как побороть?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Хех... Не должно оно так себя вести. Помучай функцию function scale_image($arg) в functions.php. Если не получится, напиши тут - будем мочить систему "в сортире" © В.В. Путин :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

 function scale_image($arg)
{
 // max_width, max_height, cur_width, cur_height
 
 $ret = array(
      'img_width'  => $arg['cur_width'],
      'img_height' => $arg['cur_height']
  	 );
 
 if ( $arg['cur_width'] > $arg['max_width'] )
 {
	 $ret['img_width']  = $arg['max_width'];
	 $ret['img_height'] = ceil( ( $arg['cur_height'] * ( ( $arg['max_width'] * 100 ) / $arg['cur_width'] ) ) / 100 );
	 $arg['cur_height'] = $ret['img_height'];
	 $arg['cur_width']  = $ret['img_width'];
 }
 
 if ( $arg['cur_height'] > $arg['max_height'] )
 {
	 $ret['img_height']  = $arg['max_height'];
	 $ret['img_width']   = ceil( ( $arg['cur_width'] * ( ( $arg['max_height'] * 100 ) / $arg['cur_height'] ) ) / 100 );
 }
 

 return $ret;

}

 

В общих чертах понятно, что здесь делается, но куда она может "девать" символ процента, причем только в случае с height так и не смог понять:D

Может кто помочь?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Есть ощущение, что это из-за округления:

$ret['img_height'] = ceil( ( $arg['cur_height'] * ( ( $arg['max_width'] * 100 ) / $arg['cur_width'] ) ) / 100 );

но не могу понять, по идее, ведь и width округляется...

$ret['img_width']   = ceil( ( $arg['cur_width'] * ( ( $arg['max_height'] * 100 ) / $arg['cur_height'] ) ) / 100 );

 

Что присоветуете?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
но не могу понять, по идее, ведь и width округляется...

Вроде как одна координата округляется, а другая остаётся неизменной... У тебя какие размеры рисунка самого?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Размеры самого рисунка - 640х426

Размеры thumbnail выставленные в адм.панели - 300х200

Размеры, рассчитываемые function scale_image($arg) для этого же рисунка

299х201

Ссылка на комментарий
Поделиться на других сайтах

  • 0

]

Хех... Не должно оно так себя вести. Помучай функцию function scale_image($arg) в functions.php. Если не получится, напиши тут - будем мочить систему "в сортире" © В.В. Путин 

theIggs , ну никак не получается заставить работать...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Опытным путём было установлено, что растягивание прикреплённых изображений происходит в следующем случае: в Topics.php есть такой код -

    	 $img_size = array();
     
     $img_size = @GetImageSize( $ibforums->vars['upload_url']."/".$row['attach_id'] );
     
     if ( $img_size[0] < 1 )
     {
    	 $img_size    = array();
    	 $img_size[0] = $ibforums->vars['siu_width'] + 1;
    	 $img_size[1] = $ibforums->vars['siu_height']+ 1;
     }

Таким образом, растягивание изображения на весь прямоугольник производится только тогда, когда функция GetImageSize() не возвращает никакого результата (т.е. истинных размеров рисунка). Библиотека GD для работы функции GetImageSize() не требуется.

Есть у кого-нибудь идеи, почему функция может не работать?..

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Так и не получается решить...

 

PHP VERSION: 4.3.4

 

Путь к папке upload вроде правильно прописан,

да и если бы с ним были проблемы по идее картинки бы и не закачивались...

 

Как быть-то?

Может кто обладает зарегистрированной версией и может отправить вопрос в

Службу поддержки?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

прописал простейший тест функции getimagesize в каталог форума:

<html>

<head>

<title>Image</title>

</head>

<body leftmargin="0" topmargin="0">

<?php

list($width, $height, $type, $attr) = getimagesize("./IMG_0270.jpg");

echo "<img src=\"./IMG_0270.jpg\" $attr alt=\"getimagesize() example\" />";

?>

</body>

</html>

 

No problem, все высчитывает правильно....

В чем же может быть дело?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хм... Сложно сказать, долго подробно описывать...

Что бы сделал лично я:

1. Проверил этот тестовый скриптик на файлах из папки uploads.

2. Отредактировал бы код Topics.php в том месте, где делается GetImageSize - добавил многочисленные echo - вывод имени файла (точно в том же виде, как оно передаётся в функцию), вывод определённых функцией размеров и т.д.

3. Отредактировал бы код Topics.php на предмет изменения метода. В смысле, сейчас там делается что-то вроде $img_size = getimagesize(...); а можно попробовать сделать типа list($img_size[0], $img_size[1], $type, $attr) = getimagesize(...) - короче, как в приведённом примере.

В общем, запастить бэкапом и экспериментировать, экспериментировать, экспериментировать...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А где находятся (то есть где их можно изменить) параметры, отвечающие за размеры окна при комманде “фото” и поп-ап с фотографией мембера?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Хм... Сложно сказать, долго подробно описывать...

Что бы сделал лично я:

1. Проверил этот тестовый скриптик на файлах из папки uploads.

Это попробовал, все работает, размер определяется...

 

Сейчас буду экспериментировать дальше.

МОжет кто еще какими более конкретными версиями поможет?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
2. Отредактировал бы код Topics.php в том месте, где делается GetImageSize - добавил многочисленные echo - вывод имени файла (точно в том же виде, как оно передаётся в функцию), вывод определённых функцией размеров и т.д.

3. Отредактировал бы код Topics.php на предмет изменения метода. В смысле, сейчас там делается что-то вроде $img_size = getimagesize(...); а можно попробовать сделать типа list($img_size[0], $img_size[1], $type, $attr) = getimagesize(...) - короче, как в приведённом примере.

Внес следующие контрольные изменения:

 

//----------------------------------------------------

// Tom Thumb!

//----------------------------------------------------

 

$img_size = array();

 

$img_size = @GetImageSize( $ibforums->vars['upload_url']."/".$row['attach_id'] );

 

 

list($width, $height, $type, $attr) = @GetImageSize( $ibforums->vars['upload_url']."/".$row['attach_id'] );

echo "url:".$ibforums->vars['upload_url']."/".$row['attach_id'];

----------------------------------------РЕЗУЛЬТАТ - ЗДЕСЬ ВСЕ ВЫВОДИТСЯ ПРАВИЛЬНО

 

echo "img_size1: ".$img_size[1];

----------------------------------------РЕЗУЛЬТАТ - пусто, т.е. img_size1: и все... может быть в этом и проблема?

----------------------------------------или я не правильно пытаюсь вывести содержимое?

 

if ( $img_size[0] < 1 )

{

$img_size = array();

$img_size[0] = $ibforums->vars['siu_width'] + 1;

$img_size[1] = $ibforums->vars['siu_height']+ 1;

}

 

//----------------------------------------------------

 

 

Гуру, помогите!

Ссылка на комментарий
Поделиться на других сайтах

  • 0

в Topics.php

изменил $img_size = @GetImageSize( $ibforums->vars['upload_url']."/".$row['attach_id'] );

 

 

на $img_size = GetImageSize( $ibforums->vars['upload_url']."/".$row['attach_id'] );

 

и увидел сообщение Access denied

 

т.е. вся проблема была в том, что форум в закрытой с помощью .htacess папке (форум для своих)

, а $ibforums->vars['upload_url']."/".$row['attach_id'] дает абсолютный путь (http://.....)

прописал напрямую относительный путь к папке Uploads и все заработало...

 

Странно, что только в 1 месте сказалось, по логике картинки вызываются таким же макаром,

а все работало кроме ресайза пропорционального...

 

Всем искреннее спасибо, особливо TheIggs'у, без его поддержки я забросил бы наверно.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.