Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нарезка большой картинки на мелкие 
:(
    Опции темы
WebMast
Дата 5.2.2010, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Front-end developer
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 1.1.2009
Где: Беларусь

Репутация: 2
Всего: 2



Как при помощи JavaScript, желательно при помощи jQuery, нарезать картинку на более мелкие.

Имеется в блоке одна картинка: <div><img src="tram.png" alt="" /></div>. 
Когда нажимаем на какую-то кнопку получалось так: <div><img src="1.png" alt="" /><img src="2.png" alt="" /></div>.
Где 1.png и 2.png - составляют одно целое как одна картинка (tram.png).

Название картинок не принципиально.
--------------------
Личный Блог Евгения ЖлобоРасширение vkleaner для Google Chrome
PM MAIL WWW Skype   Вверх
12345c
Дата 5.2.2010, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: нет
Всего: 101



Задайте этот вопрос сначала в вёрстке (т.к. вопрос по стилям), потом, если будут вопросы - JS.
кратко - стили overflow:hidden d div и отрицательные margin в рисунке.

Другой (попроще) способ решения - через рисунок в фоне, там тоже стили в составном св-ве background.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
WebMast
Дата 5.2.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Front-end developer
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 1.1.2009
Где: Беларусь

Репутация: 2
Всего: 2



Как по стилям?Есть Одна картинка скажем вот:
====
Ее мы разбиваем например на две картинки.
== и ==
Это мы делаем не в ручную, а должно быть скриптом. Так как таких маленьких картинок может получиться около 500. Я видел скрипты puzzle, которые разбивают фоновые картинки, что мне не подходит.

Если такое сделать нельзя, придется в ручную резать 500 картинок(.
--------------------
Личный Блог Евгения ЖлобоРасширение vkleaner для Google Chrome
PM MAIL WWW Skype   Вверх
NNaarreekk
Дата 5.2.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 1
Всего: 3



Для примера если у тебя есть картинка 500x500px и ты ее хочешь разделить на четыре по 250px
делаешь примерно так:
Код

<div id="x1"></div>
<div id="x2"></div>
<br style="clear:both"/>
<div id="x3"></div>
<div id="x4"></div>


Код

#x1{background:url(pic500x500.png) no-repeat;float:left;}
#x2{background:url(pic500x500.png) -250px 0px no-repeat;float:left;}
#x3{background:url(pic500x500.png)  0px -250px no-repeat;float:left;}
#x4{background:url(pic500x500.png) -250px -250px no-repeat;float:left;}


У тебя все равно будет одна картинка, но будет выглядеть как будто их 4.
тебе просто нужно это действие с помощью JS автоматизировать цыклом.

Если такой вариант не устраивает скажи конкретную задачу, будет легче.
PM MAIL WWW   Вверх
12345c
Дата 5.2.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: нет
Всего: 101



Цитата(WebMast @  5.2.2010,  12:43 Найти цитируемый пост)
Как по стилям?Есть Одна картинка скажем вот:====Ее мы разбиваем например на две картинки.== и ==Это мы делаем не в ручную, а должно быть скриптом. Так как таких маленьких картинок может получиться около 500. 

На самом деле, скрипт JS никаких картинок не разбивает и вообще он ни при чём, всё делает HTML. Он загружает 500 исходных картинок (это так же легко, как одну) и отображает фрагменты их через CSS. Дело за JS лишь на 2-м этапе - если не хочется писать 500 фрагментов HTML, можно генерировать в JS. Но это вторая часть вопроса, первая - вёрстка. Поэтому тему отправил сюда. Будет "рыба" на HTML и вопросы по JS - пожалуйста, в раздел JS.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
NNaarreekk
Дата 5.2.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 1
Всего: 3



Цитата(12345c @  5.2.2010,  19:33 Найти цитируемый пост)
Он загружает 500 исходных картинок

Как я понял у топикстартера нету 500 картинок а есть одна которую он хочет разделить на 500 (и явно не фотошопом).
Вопрос не к JS'у но как видно и не к CSS'у.
PM MAIL WWW   Вверх
WebMast
Дата 5.2.2010, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Front-end developer
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 1.1.2009
Где: Беларусь

Репутация: 2
Всего: 2



Если разбивать картинки на фоновые, это не так уж и правильно. Мне нужно будет просчитывать уйму деталей. Потому что часто изменяются размеры этих изображений. При чем не просто площадь, а сама картинка увеличивается.

Цитата(NNaarreekk)
Вопрос не к JS'у но как видно и не к CSS'у.

Так что же мне делать?
--------------------
Личный Блог Евгения ЖлобоРасширение vkleaner для Google Chrome
PM MAIL WWW Skype   Вверх
WebDisaster
Дата 5.2.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 22.6.2007

Репутация: 17
Всего: 19



Цитата(WebMast @  5.2.2010,  19:19 Найти цитируемый пост)
Так что же мне делать

Если это нужно делать именно скриптом, то нужно делать серверным скриптом, а не клиентским. По соображениям безопасности клиенский js не имеет варианта кроссбраузерного доступа к записи файлов на клиентской машине, кроме кукисов (исключения в виде FF и отдельные случаи с IE мы рассматривать не будем).

Правда, у меня возникает БОЛЬШОЙ вопрос, действительно ли там вообще нужно хоть что-то "резать"? Есть подозрение, что если одна картинка должна "делиться" на 500, эту задача можно решать много проще, через css-позиционирование фона блочных элементов и без каких-либо скриптов. Только саму задачу нам рассказать не хотят.
PM MAIL   Вверх
WebMast
Дата 6.2.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Front-end developer
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 1.1.2009
Где: Беларусь

Репутация: 2
Всего: 2



Задача:
Имеется картинка. Большая.. Разбита на меленькие картинки. Все это помещено в блок (назовем это областью просмотра). Когда происходит клик на определенную ссылку, мы из области просмотра берем центр, состоящий, например, из четырех картинок (2 строки 2 столбца). Эти четыре картинки увеличиваются до размеров области просмотра. Тем самым как бы происходит увеличение.

Цитата

Если это нужно делать именно скриптом, то нужно делать серверным скриптом, а не клиентским.

Трудно ли его написать? Чтобы делило на прямоугольники с заданными размерами?

Очень нужна помощь.
--------------------
Личный Блог Евгения ЖлобоРасширение vkleaner для Google Chrome
PM MAIL WWW Skype   Вверх
WebDisaster
Дата 6.2.2010, 15:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 22.6.2007

Репутация: 17
Всего: 19



Вариант без нарезки и (почти) без скриптов: посмотреть можно здесь, html ниже. Это только общая концепция, если есть желание использовать - допиливай сам.

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="css/css.css" rel="stylesheet" type="text/css" media="screen" />
<style type="text/css">

div#wrapper {
    margin: 20px auto;
    border: 1px solid #f55;
    width: 321px;
}
div#wrapper img.map {
    width: 320px;
    height: 320px;
}
div#viewport {
    position: absolute;
    border: 1px solid #55f;
    top: 40px;
    left: 50%;
    margin-left: -140px;
    height: 280px;
    width: 280px;
    cursor: pointer;
}
.hid {
    display: none;
}
.vis {
    display: block;
}
.cls01 {
    background: #fff url(../img/number-net.jpg) left top no-repeat;
}
.cls02 {
    background: #fff url(../img/number-net.jpg) -250px 0 no-repeat;
}
.cls03 {
    background: #fff url(../img/number-net.jpg) -500px 0 no-repeat;
}
.cls04 {
    background: #fff url(../img/number-net.jpg) -680px 0 no-repeat;
}
.cls05 {
    background: #fff url(../img/number-net.jpg) left -250px no-repeat;
}
.cls06 {
    background: #fff url(../img/number-net.jpg) -250px -250px no-repeat;
}
.cls07 {
    background: #fff url(../img/number-net.jpg) -500px -250px no-repeat;
}
.cls08 {
    background: #fff url(../img/number-net.jpg) -680px -250px no-repeat;
}
.cls09 {
    background: #fff url(../img/number-net.jpg) left -500px no-repeat;
}
.cls10 {
    background: #fff url(../img/number-net.jpg) -250px -500px no-repeat;
}
.cls11 {
    background: #fff url(../img/number-net.jpg) -500px -500px no-repeat;
}
.cls12 {
    background: #fff url(../img/number-net.jpg) -680px -500px no-repeat;
}
.cls13 {
    background: #fff url(../img/number-net.jpg) left -680px no-repeat;
}
.cls14 {
    background: #fff url(../img/number-net.jpg) -250px -680px no-repeat;
}
.cls15 {
    background: #fff url(../img/number-net.jpg) -500px -680px no-repeat;
}
.cls16 {
    background: #fff url(../img/number-net.jpg) -680px -680px no-repeat;
}
a {
    display: block;
    width: 32%;
    float: left;
}
</style>
</head>
<body>
<div id="wrapper"> <img src="img/number-net.jpg" alt="image" border="0" usemap="#Map" class="map" />
  <map name="Map" id="Map">
    <area onclick="document.getElementById('viewport').className='vis cls01'" shape="rect" coords="4,4,78,78" href="#" alt="11" />
    <area onclick="document.getElementById('viewport').className='vis cls02'" shape="rect" coords="88,6,160,80" href="#" alt="12" />
    <area onclick="document.getElementById('viewport').className='vis cls03'" shape="rect" coords="162,4,240,80" href="#" alt="13" />
    <area onclick="document.getElementById('viewport').className='vis cls04'" shape="rect" coords="240,8,320,80" href="#" alt="14" />
    <area onclick="document.getElementById('viewport').className='vis cls05'" shape="rect" coords="4,84,78,158" href="#" alt="21" />
    <area onclick="document.getElementById('viewport').className='vis cls06'" shape="rect" coords="84,84,160,160" href="#" alt="22" />
    <area onclick="document.getElementById('viewport').className='vis cls07'" shape="rect" coords="164,86,240,160" href="#" alt="23" />
    <area onclick="document.getElementById('viewport').className='vis cls08'" shape="rect" coords="242,86,318,162" href="#" alt="24" />
    <area onclick="document.getElementById('viewport').className='vis cls09'" shape="rect" coords="6,166,80,240" href="#" alt="31" />
    <area onclick="document.getElementById('viewport').className='vis cls10'" shape="rect" coords="86,166,162,242" href="#" alt="32" />
    <area onclick="document.getElementById('viewport').className='vis cls11'" shape="rect" coords="166,166,240,240" href="#" alt="33" />
    <area onclick="document.getElementById('viewport').className='vis cls12'" shape="rect" coords="242,166,322,242" href="#" alt="34" />
    <area onclick="document.getElementById('viewport').className='vis cls13'" shape="rect" coords="6,244,78,318" href="#" alt="41" />
    <area onclick="document.getElementById('viewport').className='vis cls14'" shape="rect" coords="82,244,162,320" href="#" alt="42" />
    <area onclick="document.getElementById('viewport').className='vis cls15'" shape="rect" coords="164,244,240,322" href="#" alt="43" />
    <area onclick="document.getElementById('viewport').className='vis cls16'" shape="rect" coords="240,236,318,322" href="#" alt="44" />
  </map>
</div>
    <a onclick="document.getElementById('viewport').className='vis cls01'" href="#">Link #01</a>
    <a onclick="document.getElementById('viewport').className='vis cls02'" href="#">Link #02</a>
    <a onclick="document.getElementById('viewport').className='vis cls03'" href="#">Link #03</a>
    <a onclick="document.getElementById('viewport').className='vis cls04'" href="#">Link #04</a>
    <a onclick="document.getElementById('viewport').className='vis cls05'" href="#">Link #05</a>
    <a onclick="document.getElementById('viewport').className='vis cls06'" href="#">Link #06</a>
    <a onclick="document.getElementById('viewport').className='vis cls07'" href="#">Link #07</a>
    <a onclick="document.getElementById('viewport').className='vis cls08'" href="#">Link #08</a>
    <a onclick="document.getElementById('viewport').className='vis cls09'" href="#">Link #09</a>
    <a onclick="document.getElementById('viewport').className='vis cls10'" href="#">Link #10</a>
    <a onclick="document.getElementById('viewport').className='vis cls11'" href="#">Link #11</a>
    <a onclick="document.getElementById('viewport').className='vis cls12'" href="#">Link #12</a>
    <a onclick="document.getElementById('viewport').className='vis cls13'" href="#">Link #13</a>
    <a onclick="document.getElementById('viewport').className='vis cls14'" href="#">Link #14</a>
    <a onclick="document.getElementById('viewport').className='vis cls15'" href="#">Link #15</a>
    <a onclick="document.getElementById('viewport').className='vis cls16'" href="#">Link #16</a>
<div id="viewport" class="hid"  onclick="document.getElementById('viewport').className='hid'"></div>
</body>
</html>


 
PM MAIL   Вверх
WebMast
Дата 6.2.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Front-end developer
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 1.1.2009
Где: Беларусь

Репутация: 2
Всего: 2



Здесь мы можем увеличивать только в один раз. Как нам увеличивать например в три раза? Поверх еще один блок? Нет.. Нужно еще привязывать маркеры.. Но за идею и реализацию спасибо.
--------------------
Личный Блог Евгения ЖлобоРасширение vkleaner для Google Chrome
PM MAIL WWW Skype   Вверх
Kill_em_all
Дата 7.2.2010, 16:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Может конечно не в тему

http://www.asp.net/AJAX/AjaxControlToolkit.../Seadragon.aspx
Посмотри может это подойдет

Можно еще в сторону Silverlight покопать. Кстати на Silverlight много сайтов с использованием DeepZoom (HardRock Cafe к примеру).

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.