Сканирование пользовательских URL-адресов для изображений и изменение их размера с помощью AJAX - PullRequest
1 голос
/ 11 августа 2011

Я создаю веб-приложение, в котором пользователи могут хранить ссылки, связанные с изображениями 200x200. По умолчанию я хотел бы отсканировать ссылку для изображений, а затем вернуть миниатюры самых крупных (из которых пользователь может выбрать «официальный» эскиз). Я хочу, чтобы все это происходило через AJAX. Мой вопрос: каков наилучший способ сделать это?

В настоящее время я использую PHP Simple HTTP Parser для сканирования URL. Затем я нахожу атрибут src всех тегов <img>, использую getimagesize для хранения размера изображения, расположенного по этому URL, сортирую массив от самого большого до самого маленького и возвращаю 5 лучших URL самых больших изображений через AJAX клиенту , Затем клиент отправляет разные AJAX-запросы для каждого, что заставляет серверный скрипт ImageMagick загружать и вырезать изображение в виде миниатюры, сохранять его во временной папке и затем возвращать URL-адрес этого эскиза, который клиент, наконец, загружает на свой браузер.

Излишне говорить, что это немного сложно и, вероятно, действительно неэффективно. Выполнение этого процесса на http://en.wikipedia.org занимает от 10 до 15 секунд от начала до конца. Однако я не уверен, что есть более эффективные способы.

Ответы [ 3 ]

0 голосов
/ 11 августа 2011

Вам, вероятно, следует использовать PHP-класс DOMDocument для захвата / анализа html-страницы.

getimagesize() означает, что вам нужно загрузить каждое изображение и обработать его.Возможно, вам следует подумать о том, чтобы просто показать пользователю ВСЕ изображения, просто разместив теги img, которые ссылаются на исходную HTML-страницу.Вы можете выбрать размер по своему усмотрению, используя теги.Таким образом, вам не нужно загружать / обрабатывать одно изображение, пока пользователь фактически не выберет одно для миниатюры.

0 голосов
/ 18 декабря 2011

Интересно, если / как ты решил это?

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

Таким образом, он немного более эффективен, так как загружает столько изображений, сколько ему нужно

0 голосов
/ 11 августа 2011

Я бы сделал это одним AJAX-запросом, когда скрипт автоматически изменял размеры 5 самых больших изображений при первом проходе, сохранял их и возвращал массив JSON с URL-адресами изображений с измененным размером для клиента.

...