Форум сетевых администраторов
Показаны 17 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 2.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=45)
-- Вопрос по аттачам (http://netadmin.ws/forum/showthread.php?threadid=4674)


Помещено e1 09-03-2003 в 18:19:

Exclamation Вопрос по аттачам

В файле functions.php есть пара строчек, где прописывается, что показать в постбите - ссылку на аттач или картинку:


PHP:


if (($viewattachedimages) and ($bbuserinfo[userid]==0 or $bbuserinfo[showimages])) 
                {

                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachmentimage")."\";");

            } else {
            eval(
"\$post[attachment] = \"".gettemplate("postbit_attachment")."\";");
        }
    } else {
        
$post[attachment]="";
    }



Я хочу сделать так, чтобы при размере картинки в ширину более 500 пикселей на неё ставила ссылка, а если меньше - сама картинка.

Вроде всё легко. И есть функция getimagesize , с помощью которой и можно вытащить размер, но вот какая переменная отвечает за файл аттача? Я перепробовал кучу вариантов, но ни один не работает...

Может кто знает?

Заранее спасибо.


Помещено Jaxick 09-03-2003 в 18:28:

я точно не знаю как работает буллетин с аттачами , но по моему там нигде не прописывается размер картинки!
я думаю что это будет не легко!прийдется создавать новые колоны в таблице!!!
Я могу тебе предложить легкий способ сделать:
чтоб если картинка больше 500 кб то давалась на неё ссылка , а если меньше то чтоб она показывалась!


Помещено Rumata 09-03-2003 в 18:31:

AFAIK атач лежит в таблице в blob поле, так что, если ты хочешь его получить, посмотри ф-ии в файлк attachment.php, т.е. я имею в виду, что вызвав с параметрами этот самый скрипт ты получишь картнку, от которой можно взять уже размеры


Помещено Jaxick 09-03-2003 в 18:35:

e1 , getimagesize - это по моему токо для динамических изображений!на яве как то можно проверить размер картинки , но жаль что непомню как!


Помещено e1 09-03-2003 в 18:54:

Jaxick

quote:

The getimagesize() function will determine the size of any GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP or IFF image file and return the dimensions along with the file type and a height/width text string to be used inside a normal HTML IMG tag.



мне нужно просто вытащить ширину из аттача и всё

Rumata
пока не нашел нужного...


Помещено Rumata 09-03-2003 в 19:49:

Rumata
пока не нашел нужного... [/B][/QUOTE]
http://netadmin.ws/forum/attachment.php?s=&postid=37053 ,т.е. attachment.php?s=&postid=37053 есть ни что иное, как zip файл, если бы там лежала картинка, то это была бы картинка.

Твои действия:
по имени файла (точнее его расширению) проверяешь, что это картинка, потом делаешь getimagesize("attachment.php?s=&postid=$id").

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


Помещено e1 09-03-2003 в 19:54:

Rumata

quote:
attachment.php?s=&postid=37053

пока не доковырялся до этого...

способ довольно простой, т.к. вБ сам определяет картинка, это или нет, а тебе нужно только в пикселях проверить

e1 добавил 09-03-2003 в 20:04:40:
Хм... странно... сделал так:
$imginfo=@getimagesize("http://localhost/vb/attachment.php?s=&postid=$post[postid]");
работает, а вот так:
$imginfo=@getimagesize("attachment.php?s=&postid=$post[postid]");
это плохо...

e1 добавил 09-03-2003 в 20:34:35:
В общем, кому интересно. Мини-хак.

Чего делает? [i]Если в аттаче картинка больше n-ного кол-ва пикселей, то на неё ставится ссылка, чтобы не раздвигать таблицу, если меньше, то картинка показывается[i]

Как делать?

В файле functions.php ищем:


PHP:

if ($post[attachmentextension]=="gif" or $post[attachmentextension]=="jpg" or $post[attachmentextension]=="jpeg" or $post[attachmentextension]=="jpe" or $post[attachmentextension]=="png") {
            if ((
$viewattachedimages) and ($bbuserinfo[userid]==0 or $bbuserinfo[showimages])) {
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachmentimage")."\";");
            } else {
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachment")."\";");
            }
        } else {
            eval(
"\$post[attachment] = \"".gettemplate("postbit_attachment")."\";");
        }
    } else {
        
$post[attachment]="";
    }



и заменяем всё это дело на:


PHP:

if ($post[attachmentextension]=="gif" or $post[attachmentextension]=="jpg" or $post[attachmentextension]=="jpeg" or $post[attachmentextension]=="jpe" or $post[attachmentextension]=="png") {
            
$bburl="http://localhost/rl"; //замените на УÐ_Л до своего форума! без последнего '/'
            
$imginfo=@getimagesize("$bburl/attachment.php?postid=$post[postid]");
            if ((
$viewattachedimages) and ($bbuserinfo[userid]==0 or $bbuserinfo[showimages]) and ($imginfo[0]<520)) // 520 - число пикселей в ширину. можно своё поставить
            
{
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachmentimage")."\";");
            } else {
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachment")."\";");
            }
        } else {
            eval(
"\$post[attachment] = \"".gettemplate("postbit_attachment")."\";");
        }
    } else {
        
$post[attachment]="";
    }



ну, вроде и всё


Помещено MCTarakan 10-03-2003 в 00:06:

так, вопросы:
1. зачем вставлять урл к форуму?
2. можно ли это дело прописать чтобы редактировалось через админку???

__________________
yMC.ru - хомяк музыканта


Помещено Rumata 10-03-2003 в 00:51:

MCTarakan, при желании можно прописать все что угодно.
Урл к форуму afaik лежит в $bburl =))


Помещено MCTarakan 10-03-2003 в 02:31:

Rumata

quote:
при желании можно прописать все что угодно.

тада как?
quote:
Урл к форуму afaik лежит в $bburl

не понял???

__________________
yMC.ru - хомяк музыканта


Помещено e1 10-03-2003 в 05:17:

MCTarakan
1) чтобы эта хрень поняла откеда аттач тащить просто вчера больше ничего в голову не пришло, откуда его взять.
2) можно, но нах тебе это надо? морочиться с админкой больше, чем просто УÐ_Л вписать


Помещено MCTarakan 10-03-2003 в 21:35:

e1 так, с урлом разабрался... сорри за глупый вопрос...

А в админку надо, чтобы можно было там прописывать размеры картинки, а не лезть каждый раз в файл (вдруг дизигн менять буду )

__________________
yMC.ru - хомяк музыканта


Помещено MCTarakan 15-05-2003 в 04:50:

эээ... подымаю тему! Что интересно, а можно например сделать так:
1. если картинка размерами МЕНЬШЕ установленных - она показывается в своих размерах
2. если картинка размерами БОЛЬШЕ установеленных - ей придаются именно установленные размеры!

MCTarakan добавил 15-05-2003 в 04:55:14:
таааак... сам допетрил!

Короче надо создать новый темплейт например postbit_attachmentimagesmall такого содержания:


PHP:


<!--<p>--><smallfont>$post[username] прикрепил это изображение:<br>
<
a href="attachment.php?s=$session[sessionhash]&postid=$post[postid]" target="_blank"><img src="attachment.php?s=$session[sessionhash]&postid=$post[postid]" border="0" alt="" vspace="8" hspace="4" width="XXX"></a>
</
smallfont><!--</p>--> // ну тут ясно что надо делать... можете ссылку убрать, я ее сделал, чтобы показывать картинку в полный размер! <img src="images/smilies/wink.gif" border="0" alt="">



Ну и замерить

PHP:

{ 
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachmentimage")."\";"); 
            } else { 
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachment")."\";");



на


PHP:

{ 
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachmentimage")."\";"); 
            } else { 
                eval(
"\$post[attachment] = \"".gettemplate("postbit_attachmentimagesmall")."\";");



Вроде так?

__________________
yMC.ru - хомяк музыканта


Помещено Stim 17-05-2003 в 13:55:

как-то странно хак работает))
форум теперь вообще треды с картинками не показывает (долго думает и решает что пришел таймаут)
может проще phpшный resize использовать?
Да и вот еще одно замечание - предложенным способом только ширина меняется, а картинка чаще всего если она большая по ширине то и по высоте тоже большая отсюда получаем сжатую по ширине но не по длине картинку, тут тогда надо уже через пропорции ресайзить как -то

__________________
Hack the forum!


Помещено MCTarakan 18-05-2003 в 02:30:

Stim ээээ... ты это мой вариан попробывал? А вариант e1-го работает намано или также?

Я конечно не изголялся сильно... в идеале конечно ресайз прикрутить, но я не спец!

__________________
yMC.ru - хомяк музыканта


Помещено Stim 18-05-2003 в 11:45:

я сразу вариант e1 модифицировал твоим и грузиться треды с картинками вообще перестали, потом меня осенило что так называемы aspect ratio все равно не сохраняется и дальше парится я уже не стал

__________________
Hack the forum!


Помещено MCTarakan 18-05-2003 в 17:30:

Stim тада что-то не то... спасиб!

__________________
yMC.ru - хомяк музыканта


Формат времени GMT. Текущее время 08:12.
Показаны 17 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.