1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Работа с изображением на сервере.

Тема в разделе "Web Coding", создана пользователем ctx79, 29 сен 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ctx79

    ctx79 Создатель

    Регистр.:
    25 авг 2006
    Сообщения:
    31
    Симпатии:
    1
    Вопрос вот в чем. Допустим на сервере лежит очень большая картинка (к примеру 10000х10000рх - карта города). На сайте выведено ее уменьшенное изображение. При клике мышем ловим координаты точки, где кликнули. Так вот вопрос - как теперь получить кусок большого изображения с заданным масштабом?
    Желательно примеры, можно пинка где почитать.
    P.S. В идеале еще организовать перетаскивание споказом соответствующего куска...
     
  2. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    здесь покопайся, есть плагин..
    http://jquery.com/plugins/
    точнее ссылку не дам - времени искать нет..

    зы.. только jQuery ставить придется, но это скорее плюс - полезная библиотека..
     
  3. h0ttab[sun]

    h0ttab[sun]

    Регистр.:
    30 авг 2007
    Сообщения:
    319
    Симпатии:
    43
    так миниатюру можно при помощи таблицы разбитьи и зедлать сылками с AJAX. или воспользоватцо Мапингом на картинке но это уже отмирающий способ как ан меня.

    1)простой враиант порезать на логические куски раз..
    2)Когдато читал что у пхп есть возможность вырезать кусок из цельного изображения.

    Пы.Сы.
    Желательно разделить для начала карту на раены а потмо возможность мапинга и тд..или возможно секторы типа радиус от клика там 20 пх.
     
  4. mirvana

    mirvana Писатель

    Регистр.:
    23 окт 2007
    Сообщения:
    5
    Симпатии:
    0
    Когда-то была похожая задача.
    Вот что получилось: http://malex.com.ru/demo/map/
    Дано:
    - карта состоит из кусочков 500х500 точек
    - несколько уровней зума
    - при клике на миниатюру рассчитываются координаты "большой карты" и из 4 кусков 500х500 склеивается 1 и потом вырезается.
     
  5. fs84

    fs84 Читатель

    Заблокирован
    Регистр.:
    19 дек 2006
    Сообщения:
    150
    Симпатии:
    43
    Если не трудно выложи сюда исходник.
     
  6. xforumer

    xforumer Создатель

    Регистр.:
    29 окт 2007
    Сообщения:
    48
    Симпатии:
    2
    Тут сложность в том плане, что если программно обрабатывать изображение, то не хватит оперативки сервера если несколько процессов апача например будут этим заниматься параллельно.
     
  7. fs84

    fs84 Читатель

    Заблокирован
    Регистр.:
    19 дек 2006
    Сообщения:
    150
    Симпатии:
    43
    Счас буду ковырять jQuery и пытаться приделать кеширование, тогда вопрос отпадет. Действительно скрипт показынный mirvana, слегка подтормаживает.
     
  8. censored!

    censored!

    Регистр.:
    3 авг 2007
    Сообщения:
    293
    Симпатии:
    106
    Не хватит оперативки взять четыре изображения (500 на 500), соединить их, и выплюнуть пользователю? А если известен масштаб - то их даже и соединять не надо - так кусками и выводить.
    ...
    Ты лучше вот так:
    Сколько у тебя вариантов масштаба? Вот накопируй свою карту столько раз, сколько вариантов масштаба. Потом уменьши карты под каждый масштаб. Потом каждую карту "нашинкуй" на квадраты, например, 100 на 100 пикселей. И у тебя получиться:
    /папка_с_нарезками_для_масштаба_10%/
    /папка_с_нарезками_для_масштаба_20%/
    ...
    /папка_с_нарезками_для_масштаба_100%/

    Поле карты постоянное, например, 500 на 500 пикселей. Т.е. так как каждый кусок по 100 пикселей, в карте всегда будет 25 изображений. А в какую ячейку карты какое изображение выводить — расчитаешь по клику и выбранному масштабу.

    p.s. Если карта большая, то в папке масштабов придется подпапки создавать, чтобы быстрее файлы прочитывались и выплевывались.
     
  9. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    а что мешает пойти по след алгоритму:

    1. при помощи js ловим размеры картинки
    2. им же задаем координатную сетку с заданным шагом
    3. ловим событие onclick курсора, считывая его положение над картинкой
    4. вызываем, скажем php скрипт, кропирующий изображение, передавая в него координаты ячейки - x, y левого верхнего ее (ячейки) угла + шаг
    5. последний выдает в поток фрагмент картинки
    6. опционально. кэшируем фрагмент

    имхо все..
     
  10. censored!

    censored!

    Регистр.:
    3 авг 2007
    Сообщения:
    293
    Симпатии:
    106
    Чтобы обрезать, сначала надо открыть.
    Т.е. пока нету в кэше каждый зашедший пользователь вешают сервак (все, конечно, от карты зависит. Какого размера).
     
Статус темы:
Закрыта.