Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   получить картинку для URL (https://javascript.ru/forum/misc/25162-poluchit-kartinku-dlya-url.html)

malkoff 27.01.2012 13:02

получить картинку для URL
 
подскажите как можно реализовать автоматическое получение картинки при указании URL.
например, как это сделано на Facebook и Delicious

Постим ссылку и при этом нам выдается несколько картинок на выбор со страницы

9xakep 27.01.2012 15:08

<img src='' id='img'>
<input type='text' value='' id='text'>
<input type='button' value='do' onclick="a()">
<script>
function a() {
var _src = document.getElementById('text').value
document.getElementById('img').src = _src
}
</script>

Это имели ввиду?
P.S. в текстовое поле вставьте ссылку картинки

inst 27.01.2012 15:16

Необходимо парсить исходник страницы, на которую указывает ссылка. Найти все <img /> тэги и изъять из них адреса картинок. Но, к сожалению, без серверной части это невозможно.

malkoff 27.01.2012 15:17

спасибо за ответ, но по нажатию на кнопку do ничего не происходит
если не сложно поясните ваш код

inst 27.01.2012 15:19

Цитата:

Сообщение от malkoff (Сообщение 153291)
спасибо за ответ, но по нажатию на кнопку do ничего не происходит
если не сложно поясните ваш код

Товарищ 9xakep предположил, что вы хотите встроить в свою страницу произвольную картинку, указав её непосредственный адрес.

malkoff 27.01.2012 15:23

без php не обойтися как я понял

попробую что-то вроде


$url="http://yandex.ru";
$content=file_get_contents($url);
$count=preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $content, $matches);
echo $count."<br>";
echo $matches[0][0]."<br>";


не слишком ли грузить будет сервак?

Gozar 27.01.2012 15:27

На серваке так делать не следует. Обойтись без php нужно. Твой сервер при любой нагрузке умрет.

inst 27.01.2012 15:27

Да, вам нужно что-то в таком духе.

Ещё на ум пришла мысль использовать YQL, но суть та же, просто сервер будет не ваш, а Yahoo.

malkoff 27.01.2012 15:27

как быть?

inst 27.01.2012 15:34

В любом случае Facebook и пр. используют свои сервера хотя бы потому что они отдают не полную картинку, а лишь её миниатюру.

malkoff 27.01.2012 15:40

мне тоже самое и надо сделать.
человек будет добавлять URL и при этом надо выводить несколько картинок с этого URL...
в конечном итоге одна из них(на выбор пользователя) сохраниться на серваке

malkoff 27.01.2012 15:40

Gozar,
как же быть если не PHP?

Gozar 27.01.2012 16:00

malkoff,
У тебя свой сервер или хостинг, vps тариф, нагрузка?

Gozar 27.01.2012 16:02

А вообще не парься, сделай так как считаешь нужным. Когда упадет сервак поймешь как делать не стоило ;)

Что-то можно реализовать на среднем по цене хостинге, а для чего-то и трех серверов мало будет.

Любое подобное решение делается через тестирование, а не советы на форуме.

malkoff 27.01.2012 16:12

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

Gozar 27.01.2012 16:19

malkoff,
ССылку на facebook где делается то, что ты говоришь в студию.

malkoff 27.01.2012 16:22

просто берешь любую ссылку в интернете и добавляешь в пост. жмешь опубликовать.. при этом рядом с ссылкой появляется картинка(миниатюра)

Gozar 27.01.2012 16:42

Грузить сервак будет однозначно. Превью со страницы так вообще ума не приложу как с помощью php сделать.

С помощью расширения для браузера подобное сделать довольно просто, по крайней мере мне, но я так понял такой вариант не прокатит.

Без разницы как ты будешь делать, т.к. если ты будешь делать это с помощью php, то такую же реализацию ты врядли получишь, а первый залетевший дятел разрушит цивилизацию(повесит сервер).

Ты форумом ошибся, спроси на phpclub. Можно ещё отявленных флешеров поспрашать, но насколько я знаю решение с flash работать будет не на всех сайтах.

С помощью js сделать однозначно нельзя.

inst 27.01.2012 18:53

Да не, чуваку надо просто вытянуть адреса всех картинок из статьи на сайте, ссылку на который пользователь всунет в текстбокс. Это не превью всей страницы, только отдельных картинок миниатюры. Но на браузерном JS это действительно не сделаешь.

devote 27.01.2012 19:08

Gozar,
Дауж, по твоим постам выше я понял что в PHP ты не бумбум.. Полный ноль. Все можно сделать и на PHP аккуратно и без повисаний. Если не в курсе есть такие свойства при запросах, timeout называется. Еще так же не забываем что запрос в сеть не грузит комп, а лишь останавливает работу текущего скрипта, это в том случае если делать запрос синхронно. Все делается нормально, и никто никогда не повесит то что не возможно повесить... Объясни мне пожалуйста, этож каким членом может повесить мой сервак сторонний сайт? тем что долго будет отдавать данные, или не отвечать? или еще чего?... для этого и существуют таймайту. Сброс запроса при достижении лимита ожидания.

Автору, спокойно может юзать PHP но не file_get_contents() используй расширение CURL там все можно настроить, и таймауты и заголовки получать/не получать и т.д.

Gozar 27.01.2012 19:42

devote,
Не неси ересь. На обычном хостинге под небольшой нагрузкой провайдер тебе вилку в твою заумную задницу воткнет. У тебя только и будут одни обрывы.

Ты там что конопли обкурился?

Ну конечно если у тебя три человека на сайте, ты можешь хоть картины через php рисовать ... ты наверное так и делаешь.

trikadin 27.01.2012 19:48

Gozar, какая нагрузка вообще? Получаешь код страницы, парсишь его на предмет пары картинок, берёшь их url и добавляешь к себе на страницу. Не копируя себе на сервер.

О да, серв по-любому упадёт от вытягивания одной страницы с другого домена.

Gozar 27.01.2012 19:49

Человек сто зайдут одновременно, ткнут в скрипт и 95 из них не получит ничего. Ты о чём вообще говоришь? Твой пост похож на бред.

Gozar 27.01.2012 19:50

trikadin,
И твой тоже бред.

trikadin 27.01.2012 19:51

Цитата:

Сообщение от Gozar
Человек сто зайдут одновременно, ткнут в скрипт и 95 из них не получит ничего. Ты о чём вообще говоришь? Твой пост похож на бред.

Аргументацию, примеры, пожалуйста. У меня в примерах - контакт и фейсбук, которые делают именно так, как я описал, и отлично работают. Ваши примеры в поддержку своей точки зрения?

Gozar 27.01.2012 19:51

Ну да, какая нагрузка, гонять через сервер запросы в сеть.

devote 27.01.2012 19:51

Цитата:

Сообщение от Gozar
devote,
Не неси ересь. На обычном хостинге под небольшой нагрузкой провайдер тебе вилку в твою заумную задницу воткнет. У тебя только и будут одни обрывы.

:lol:
За нагрузку да, согласен... но не путай иную нагрузку и запрос данных с какого-то там сервера.. Запросы ничего не грузят. И не пытайся спорить. Я очень много лет потратил на то что бы выучить PHP и не надо мне говорить что зная PHP я не знаю о том что он там грузит и при каких обстоятельствах

.
Цитата:

Сообщение от Gozar
Ты там что конопли обкурился?

Не имею понятия ни про какую то там коноплю, а говорю то что годами проверено. И не на одном проекте.

Цитата:

Сообщение от Gozar
Ну конечно если у тебя три человека на сайте, ты можешь хоть картины через php рисовать ... ты наверное так и делаешь.

Дауж, и как же тебе вдолбить то... Еще раз объясняю. Есть PHP сервер, все что он будет делать ГРУБО в данном случае, это выступать как прокси сервер, нагрузка будет почти таже что и при обычной отдаче данных сервером. При этом ЦП у сервака будет нагружен не больше чем при обычном его использовании для отдачи контента для сайта. Все что будет происходить, открываться дополнительное соединение с другим сервером.

Кури маны родной.

Gozar 27.01.2012 19:54

Нука в студию оба выдали свои высоконагруженные проекты, реализованные на php.

Сервера facebook:

trikadin 27.01.2012 19:56

Цитата:

Сообщение от Gozar
Нука в студию оба выдали свои высоконагруженные проекты, реализованные на php.

Я привёл примеры сайтов, работающих так.

Приводи свои)

trikadin 27.01.2012 19:58

Цитата:

Сообщение от Gozar
Сервера facebook:

Они такие лишь потому, что обслуживают миллионы запросов со всего света, а не потому, что реализуют такую технологию)

Gozar 27.01.2012 19:58

trikadin,
Не надо быть гением, чтобы понять что 100 человек похоронят ваши разглагольствования навечно. devote, Иди дальше учи php, тоже мне заслуга. Сейчас любой дурак его знает.

Gozar 27.01.2012 19:59

trikadin,
Когда ты приведешь пример своего высоконагруженного проекта, тогда и будет о чем говорить, а пока ты только догадки строишь.

devote 27.01.2012 19:59

Цитата:

Сообщение от Gozar
Нука в студию оба выдали свои высоконагруженные проекты, реализованные на php.

ну к примеру: http://carspie.com/ любое обращение к селектам, тырит данные об авто из других сайтов... Ищет тачки по VIN номерам, постоянно загружает новые объявы с других сайтов, например с этого http://vsbrothers.com/ и еще с пару десятков сайтов. тоесть CRON постоянно смотрит новые тачки на разных сайтах, скачивает о них данные, качает фотки, конвертит их в нужный формат, упаковывает архивы и т.д. Все данные формируются из разных источников. И сайт работает уже в таком режиме более двух лет... Что-то хостер не вопит... И ты не поверишь, даже у меня дома в локале ЦП 0% при запущенном этом сайте.

Gozar 27.01.2012 20:02

Цитата:

Сообщение от devote (Сообщение 153364)
ну к примеру: http://carspie.com/

Сколько человек в день на сайте?

devote 27.01.2012 20:02

Цитата:

Сообщение от Gozar
Не надо быть гением, чтобы понять что 100 человек похоронят ваши разглагольствования навечно. devote, Иди дальше учи php, тоже мне заслуга. Сейчас любой дурак его знает.

Если у тебя мозгов не хватает, то и одна команда в PHP может нагрузить ЦП на 100%. И таких говнокодеров полно, которые юзают к примеру всякие там file_get_contents() и т.д. Именно эти функции и грузят все это... Если писать все грамотно и на более низком уровне, ничего грузить не будет.

devote 27.01.2012 20:04

Цитата:

Сообщение от Gozar
Сколько человек в день на сайте?

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

Gozar 27.01.2012 20:04

devote,
Спасибо за статистику.


Часовой пояс GMT +3, время: 10:33.