getimagesize(); или imagesx(); - колко товарят сървъра?

sizif

Registered
Някой има ли идея, кое товари по-малко сървъра:

imagesx();
и
imagesy();

или:
getimagesize();

Искам да взема само размера на изображението (а getimagesize(); връща масив с типа и пр), но се колебая коя от функциите да използвам.
Изобщо, колко товарят тези функции сървъра, имат ли отношение към буфера и пр, защото възнамерявам да ги използвам доста често...

Благодаря за отговорите предварително!
 
Здравей, iwanov! :)

Искам малко повече подробности за начина им на работа.
Иначе знам как се използват и трите функции, вкл. getimagesize();

Нужно ми е да преценя дали да търся джаваскрипт или мога да си позволя да вземам размера на сървъра.

Някой може ли да обясни повече?
 
sizif каза:
Здравей, iwanov! :)

Искам малко повече подробности за начина им на работа.
Иначе знам как се използват и трите функции, вкл. getimagesize();

Нужно ми е да преценя дали да търся джаваскрипт или мога да си позволя да вземам размера на сървъра.

Някой може ли да обясни повече?
какво толкова се притесняваш няма да имаш 1 милион потребителя я по удобен вариант едвали ще намериш. ако искаш си провери за колко време ще ти вземе размерите на снимка и сварни после с другите 2 функции коя действа по бързо. вярно е че трябва да пестим ресурно но пък чак толкова.
с js едавали ще постигнеш нужния ефект , не че знам какво се опитваш да направиш.
 
Здравей, mute! :)

Вземам размерите на изображение от чужд адрес, но бави много - 5-7 сек изпълнение на скрипта за 5 изображения от 3 сървъра...
Непростимо мудно е, а само мога да си представям, какъв ресурс гълта.
Ще ползвам Js, колкото и да не ми се иска.... Става дума за изображенията, к потребителите ще постват във форум...

Явно трябва да се наспя... Изгубих няколко часа да пиша безполезни функции...
 
sizif каза:
Здравей, mute! :)

Вземам размерите на изображение от чужд адрес, но бави много - 5-7 сек изпълнение на скрипта за 5 изображения от 3 сървъра...
Непростимо мудно е, а само мога да си представям, какъв ресурс гълта.
Ще ползвам Js, колкото и да не ми се иска.... Става дума за изображенията, к потребителите ще постват във форум...

Явно трябва да се наспя... Изгубих няколко часа да пиша безполезни функции...

То реално не товари много. А пък процесора изобщо... Въпроса е, че трябва да прочете информацията от друг сървър, което като обем на информация също не е много.
 
Здравейте!

Адресът на изображението е рнрВВ-таг :


после обработвам низа с preg_replace();

$niz=preg_replace("/(\[IMG\])(.+?)(\[\/IMG\])/i", '<BR><IMG SRC="\\2" ><BR>', $niz);

Така беше досега. Но не намерих читав джаваскрипт, к да минимизира изображението, ако е твърде голямо.

Ето този, к ползвах досега:

<script type="text/javascript">

</script>
</head>
<body onload="fixImgs('photos', 150) /*('element ID', maximum width)*/">

И се задава ИД-то на таблицата, в която са изображенията:
<table id="photos">
което е ужасно неудобно :(

Затова реших сам да си смятам размера и после да подавам параметрите му на ИМГ-тага:

<?
function f_imgSize($src_img, $SIZE_X=400, $SIZE_Y=600)
{
global $serv;


$size_m=@getimagesize($src_img);

if(!$size_m)
{
$img="Изображението не е достъпно!";
}
else
{

$old_x=$size_m[0];
$old_y=$size_m[1];


if($old_x > $SIZE_X || $old_y > $SIZE_Y)
{
$ratio_x=$old_x/$SIZE_X;
$ratio_y=$old_y/$SIZE_Y;

if($ratio_x > $ratio_y)
{
$width=$SIZE_X;
$height=$old_y/$ratio_x;
$height=(int)$height;
}
else
{
$height=$SIZE_Y;
$width=$old_x/$ratio_y;
$width=(int)$width;
}

}
else
{
$width=$old_x;
$height=$old_y;
}

$img= <<< GAN
<IMG ID="photo" SRC="$src_img" WIDTH=$width HEIGHT=$height>
GAN;
}

return $img;
}
?>

Ще се учудите, колко добър рисайз правят браузърите, когато параметрите са точно сметнати... Макар че тук изскачат други проблеми, но те поне касаят рнр и мога да ги реша...

Това, к според мен прави неудобен Js-та е че първо зарежда изображенията и едва после ги рисайзва (имам форма с бекграунд на полетата и пр графични елементи и формата се размазва докато зареди всичко). Освен това не мога да го задам текущо изпълнение на функцията за всяко изображение, а общо за изображенията в даден контейнер: в таблица или див...
А и какво става, ако изобрабжението не е достъпно?
(макар че тук мисля да видя колко време би глътнала get_headers() или file_get_contents)

3 дни не съм адекватен и правя тотални глупости. Имам по-важни въпроси за решаване, а се занимавам с този :(
Ако имате идеи за Js-та помагайте!

Блгаодаря, че следите темата!
 
правиш две допълнителни колонки в таблицата и при четене на записа проверваш дали тези колонки са празни.
ако са празни - взимаш размера и си правиш необходимите сметки след което ги записваш в двете полета
ако имат стойности двете клетки директно ги попълваш в img тага
Така само първия нещастник, който гледа темата ще му зе забави заради сметките ;)
(Може да помислиш тези сметки да ги прави при добавяне на пост. Така цената за забавяне ще си я плаща този, който добавя снимки....)
Уф сега се сетих, че може да има повече от една снимка. Значи няма да правиш две допълнителни колонки, а ще трябва да ползваш отделна таблица от типа едно към много

относно преоразмеряването:
1. защо смяташ две отношения - по Х и по У?? Можеш да минеш и само с отношението на страните Х/Y ;)
2. мисля, че можеш да проверяваш само дължината на снимката дали не е по голяма от тази на форума.... ;) по този начин и спестяваш и други проверки и автоматично си решаваш проблема с това коя функция е по бърза ;) (Ползваш само imagesy(); )


едит:
относно т2. сега, като се замисля ми се струва по-добра идея да си записваш и двата размера. Иначе пак браузъра ще трябва да изтегли цялата снимка за да може да си сметне височината и пак ще се позабави, което при повече снимки ще бъде дразнещо.
 
Здравей, Slavei!

Както винаги, радвам се да те видя, макар че най-вероятно ще прочетеш отговора ми след някой и друг месец :)

По първата ти идея - да записвам в БД. Мислих го, но трудно мога да го контролирам, ако запазя модела с рнрВВ-таговете.
Примерна хипотеза:

Потребителят слага 3 снимки. Аз ги, меря, тегля, прошнуровам и пр, а резултата записвам в допълнителната таблица като пълен адрес и размери + ид-то на конкретния пост.
Пълният адрес е в случай, че при последваща редакция потребителят реши да размени местата на изображенията (а при обработката на низа мога да получа като сигурен идентификатор само адреса), а ид-то е за да облекча селекта при листване на поста.

Дотук ОК, даже много добре звучи.
Обаче, ако при редакцията потребителя премахне изображението?
Не казвам, че е невъзможно да се изтрие информацията за него, но не е удобно. Това са излишни операции, които искам да избегна...

разбира се, нещата биха се опростили, ако снимките се добавят в отделни полета, вместо в целия низ, но тогава възниква въпроса: къде ще слагам изображенията: над текста, под текста, в началото на праграф?

Ще ми се потребителят сам да им избира местата, затова рнрВВ-таговете са удобни.

По другия въпрос: защо смятам 2 съотнощения - по Х и по У?

Защото съм сложил лимит не само за ширината, но и за височината. А съотношението между страните не кореспондира пряко с лимита. Не само, че не пестя операция, но дори ще трябва да слагам проверка дали при намалението със съотношението другата страна все пак не надвишава лимита...

Докато:

$old_x/$old_y

ми дава само съотношението межу страните без връзка с лимитираната височина и ширина.
Ако лимита е квадрат - ок, така при намаляване на по-голямата страна и изчисляването на другата по нея "вместването" ще се получи, но при мен лимита е 400/600. Така не винаги по-голямата страна е тази, к излиза от лимита.

С тези два реда се получават, както съотношението между страните, така и съотношението на всяка от тях спрямо лимита:

$ratio_x=$old_x/$SIZE_X;
$ratio_y=$old_y/$SIZE_Y;

Така по-голямото съотношение ми дава страната, к излиза най-много от лимита, т.е. при нейното намаляване до лимита:

$width=$SIZE_X; или $height=$SIZE_Y

другата със сигурност ще се вмести в своя.

При неизвестност относно лимита, аз ще намаля по-голямата страна на изображението, а другата ще подравня по съотношението й спрямо първата без да съм сигурен, че това ще я "прибере" до зададените рамки.
За да имам тази сигурност, ще трябва да сложа още едно условие и евентуално да въртя в цикъл (или да описвам операцията отново).

Пробвай и ще видиш! Глътна ми няколко часа докато се сетя къде греша в иначе логичния код.

Прочем от операциите на сървъра се отказах. Снощи разглеждах джСкр на линкоса за рисайз, но не успях да го хвана, как работи (изглежда имат операция на сървъра). Все пак, ще се опитам да измисля решение с джскрипт...

Неприятното е, че изпуснах собствения си срок и ме налегна мързела, а уж съм в края на проекта :(

Благодаря, че се включи по темата!
 
sizif каза:
Здравей, Slavei!
.............


Здрасти
Кво да ти кажа.. писал съм без много да обмисля нещата. Пък и основната причина да пиша беше да ти дам идея за това да ги записваш в база...

Лично мнение:
Това с джава скрипта е дразнещо. Тук в този форум направо ме побърква тази функция...

Ако измисля нещо ще пиша, сега трябва да гоня първо един влак, пък после да го бутам ;)
 

Back
Горе