Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2013, 01:48
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Кропинг Jquery в слайдере
Есть замечательный простой кропинг который и центрует изображение и правильно его обрезает
<script src="/js/jquery.resizecrop-1.0.3.min.js"></script>
<script>
  
  $(document).ready(function(){
    $('.slide').resizecrop({
      width:320,
      height:320,
      vertical:"top"
    });  
  });  

</script>


Но вот проблема как его правильно прикрутить к слайдеру, в слайдере не хочет работать слайдер формируется из заранее выбранных изображений на клиенте на этой же странице следующим образом,
<script>
$(function()
	   {
	     $(".image").change(showPreviewImage_click);
   }
	 )
	 var num = 0;
	 function showPreviewImage_click(e) {
	   var $input = $(this);
	   var inputFiles = this.files;
	   if(inputFiles == undefined || inputFiles.length == 0) return;
	   for (var i = 0; i<inputFiles.length; i++) {
	     var id = 'id'+ ++num;
	     var input = $('<input/>', {'type': "radio", 'name': "slide_switch", 'id': id,'checked':"checked"});
	     input.appendTo($('.slider'));
	     var label = $('<label/>', {'for': id});
		
	     var img_min = $('<img/>', {'class': 'min'});
	     img_min.appendTo(label);
		 label.appendTo($('.slider'));
		
	     var inputFile = inputFiles[i];
	     var img = $('<img/>', {'class': 'slide'});
		 
	     img.appendTo($('.slider'));
	     var reader = new FileReader();
	 
	     reader.onload = (function (img1, img2)
	       {
	         return function(event) {
	           img1.attr("src", event.target.result);
	           img2.attr("src", event.target.result);
	         };
	       }
	     )(img_min, img)
	 
	     reader.onerror = function(event) {
	       alert("I AM ERROR: " + event.target.error.code);
	     };
	 
	     reader.readAsDataURL(inputFile);}
	 }
</script>

помогите пожалуйста в слайдер вставлять уже кропированное изображение, видимо требуется как то менять указанный код который формирует слайдер так чтобы в слайдер попадало уже кропированное изображение желательно без сервера, помогите пожалуйста кто может
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2013, 04:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

imediasun1,
зачем плодить новые темы ? и можно же подумать раз плагин работает с уже загруженными изображениями то и подключать его надо после загрузки изображения - после каждого изображения -- строка 32 дальше я думаю сами сообразите.

и вот это что то бессмысленное
Сообщение от imediasun1
'checked':"checked"});
10 "radio" будет выбран только один последний - нафига присваивать всем - присвойте последнему
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2013, 12:30
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

'checked':"checked"}); - для того чтобы слайд сразу отображался в слайдере без этого не отображается, а плагин прикрутить все таки не получается, напишите пожалуйста как это сделать, спасибо большое дело в том что слайдер перестает функционировать как слайдер если я уже на слайдер накладываю плагин кропинга, нужно как то сохранить наверное в переменную кропированное изображение и передавать его в слайдер, помогите пожалуйста до конца, может даже сохраняя на сервере как измененное изображение, я очень слаб в js пока что, я думаю вы успели заметить это спасибо

Последний раз редактировалось imediasun1, 18.07.2013 в 12:43.
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2013, 13:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

imediasun1,
resizecrop подключить к картинкам можно но что вы называите слайдером понятия неимею
Сообщение от imediasun1
слайдер перестает функционировать как слайдер
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2013, 15:04
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Эти картинки составляют слайдер, может быть конфликтует с resizecrope вот этот плагин, но скорее всего я думаю я к картинкам не правильно resizecrop подключаю, напишите как вы бы подключили пожалуйста
работу самого слайдера можно посмотреть здесьhttp://thecodeplayer.com/walkthrough...zed-thumbnails
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2013, 15:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

imediasun1,

<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://resize-crop.googlecode.com/files/jquery.resizecrop-1.0.3.js"></script>
  <style type="text/css">

  .min {
    width: 45px;
  }

  </style>


</head>

<body>
 <input type="file" name="my-pic" id="file-field" class="image" multiple=""/>
 <div class="slider" ></div>
 <script>
 $(function()
   {
     $(".image").change(showPreviewImage_click);
   }
 )
 var num = 0;
 function showPreviewImage_click(e) {
   var $input = $(this);
   var inputFiles = this.files;
   if(inputFiles == undefined || inputFiles.length == 0) return;
   for (var i = 0; i<inputFiles.length; i++) {
     var id = 'id'+ ++num;
     var input = $('<input/>', {'type': "radio", 'name': "slide_switch", 'id': id});
     input.appendTo($('.slider'));
     var label = $('<label/>', {'for': id});
     var img_min = $('<img/>', {'class': 'min'});
     img_min.appendTo(label);
     label.appendTo($('.slider'));
     var inputFile = inputFiles[i];
     var img = $('<img/>', {'class': 'slide'});
     img.appendTo($('.slider'))
     var reader = new FileReader();

     reader.onload = (function (img1, img2)
       {
         return function(event) {
           img1.attr("src", event.target.result);
           img2.attr("src", event.target.result);
           img2.resizecrop({
           width:320,
           height:320,
           vertical:"top"
    });
         };
       }
     )(img_min, img)

     reader.onerror = function(event) {
       alert("I AM ERROR: " + event.target.error.code);
     };

     reader.readAsDataURL(inputFile);}
     input.prop({'checked': true})

 }
 </script>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2013, 15:11
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Спасибо, я так уже пробовал но не ресайзит
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2013, 16:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от imediasun1
не ресайзит
то есть картинки неквадратные после загрузки?
зачем там скрипт непонятно -- всё на css в слайдере том
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2013, 16:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

загружаем с Shift или Ctrl несколько фото и смотрим
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://resize-crop.googlecode.com/files/jquery.resizecrop-1.0.3.js"></script>

  <style type="text/css">
  /*Time for the CSS*/
* {margin: 0; padding: 0;}
body {background: #ccc;}

.slider{
	width: 640px; /*Same as width of the large image*/
	position: relative;
	/*Instead of height we will use padding*/
	padding-top: 320px; /*That helps bring the labels down*/
	margin: 100px auto;
	/*Lets add a shadow*/
	box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.75);
}


/*Last thing remaining is to add transitions*/
.slider > img{
    max-height: 320px;
    min-width: 640px;
    position: absolute;
	left: 0; top: 0;
	transition: all 0.5s;
}

.slider input[name='slide_switch'] {
	display: none;
}

.slider label {
	/*Lets add some spacing for the thumbnails*/
	margin: 18px 0 0 18px;
	border: 3px solid #999;

	float: left;
	cursor: pointer;
	transition: all 0.5s;

	/*Default style = low opacity*/
	opacity: 0.6;
}

.slider label img{
	display: block;
    height: 45px;
}

/*Time to add the click effects*/
.slider input[name='slide_switch']:checked+label {
	border-color: #666;
	opacity: 1;
}
/*Clicking any thumbnail now should change its opacity(style)*/
/*Time to work on the main images*/
.slider input[name='slide_switch'] ~ img {
	opacity: 0;
		-moz-transform: scale(1.1); /* Для Firefox */
    -ms-transform: scale(1.1); /* Для IE */
    -webkit-transform: scale(1.1); /* Для Safari, Chrome, iOS */
    -o-transform: scale(1.1); /* Для Opera */
    transform: scale(1.1);
}
/*That hides all main images at a 110% size
On click the images will be displayed at normal size to complete the effect
*/
.slider input[name='slide_switch']:checked+label+img {
	opacity: 1;
    -moz-transform: scale(1); /* Для Firefox */
    -ms-transform: scale(1); /* Для IE */
    -webkit-transform: scale(1); /* Для Safari, Chrome, iOS */
    -o-transform: scale(1); /* Для Opera */
    transform: scale(1);

}
/*Clicking on any thumbnail now should activate the image related to it*/

/*We are done :)*/


</style>


</head>

<body>
 <input type="file" name="my-pic" id="file-field" class="image" multiple=""/>
 <div class="slider" ></div>
 <script>
 $(function()
   {
     $(".image").change(showPreviewImage_click);
   }
 )
 var num = 0;
 function showPreviewImage_click(e) {
   var $input = $(this);
   var inputFiles = this.files;
   if(inputFiles == undefined || inputFiles.length == 0) return;
   for (var i = 0; i<inputFiles.length; i++) {
     var id = 'id'+ ++num;
     var input = $('<input/>', {'type': "radio", 'name': "slide_switch", 'id': id});
     input.appendTo($('.slider'));
     var label = $('<label/>', {'for': id});
     var img_min = $('<img/>', {'class': 'min'});
     img_min.appendTo(label);
     label.appendTo($('.slider'));
     var inputFile = inputFiles[i];
     var img = $('<img/>', {'class': 'slide'});
     img.appendTo($('.slider'))
     var reader = new FileReader();

     reader.onload = (function (img1, img2)
       {
         return function(event) {
           img1.attr("src", event.target.result);
           img2.attr("src", event.target.result);


         };
       }
     )(img_min, img)

     reader.onerror = function(event) {
       alert("I AM ERROR: " + event.target.error.code);
     };

     reader.readAsDataURL(inputFile);}
     input.prop({'checked': true});
   }
 </script>
</body>
</html>

Последний раз редактировалось рони, 18.07.2013 в 17:25.
Ответить с цитированием
  #10 (permalink)  
Старый 18.07.2013, 23:32
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

а где ресайз, мне надо чтобы загружаемые фотки были с кропом 320 на 320
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
Несколько версий JQuery UI на одной странице. Casufi jQuery 2 10.11.2012 15:24
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 22:29
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55